Ответ 1
split("\\*")
работает со мной.
Скажем, есть строка...
String myString = "my*big*string*needs*parsing";
Все, что я хочу, - это разбить строку на "мои", "большие", "строки" и т.д. Поэтому я стараюсь
myString.split("*");
возвращает java.util.regex.PatternSyntaxException: Висячий метасимвол '*' рядом с индексом 0
*
является специальным символом в регулярном выражении, поэтому я стараюсь избегать....
myString.split("\\*");
одно и то же исключение. Я подумал, что кто-то знает быстрое решение. Спасибо.
split("\\*")
работает со мной.
Один escape \
не будет делать трюк в Java 6 на Mac OSX, поскольку \
зарезервирован для \b \t \n \f \r \'\"
и \\
. Кажется, что у вас есть работа для меня:
public static void main(String[] args) {
String myString = "my*big*string*needs*parsing";
String[] a = myString.split("\\*");
for (String b : a) {
System.out.println(b);
}
}
выходы:
my
синтаксический анализ
Должен делать именно то, что вам нужно.
myString.split("\\*");
отлично работает на Java 5. Какой JRE вы используете.
Вы также можете использовать StringTokenizer.
StringTokenizer st = new StringTokenizer("my*big*string*needs*parsing", "\*");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
Это происходит потому, что метод split принимает регулярное выражение, а не просто строку.
Символ '*' означает совпадение предыдущего символа с нолем или более раз, поэтому это неверно указывать его самостоятельно.
Таким образом, это должно быть экранировано, как показано ниже
split("\\*")