Подтвердить что ты не робот

Вопрос о разделении строк с помощью "*"

Скажем, есть строка...

String myString =  "my*big*string*needs*parsing";

Все, что я хочу, - это разбить строку на "мои", "большие", "строки" и т.д. Поэтому я стараюсь

myString.split("*");

возвращает java.util.regex.PatternSyntaxException: Висячий метасимвол '*' рядом с индексом 0

* является специальным символом в регулярном выражении, поэтому я стараюсь избегать....

myString.split("\\*");

одно и то же исключение. Я подумал, что кто-то знает быстрое решение. Спасибо.

4b9b3361

Ответ 1

split("\\*") работает со мной.

Ответ 2

Один 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





синтаксический анализ

Ответ 4

myString.split("\\*"); отлично работает на Java 5. Какой JRE вы используете.

Ответ 5

Вы также можете использовать StringTokenizer.

 StringTokenizer st = new StringTokenizer("my*big*string*needs*parsing", "\*");
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }

Ответ 6

Это происходит потому, что метод split принимает регулярное выражение, а не просто строку.

Символ '*' означает совпадение предыдущего символа с нолем или более раз, поэтому это неверно указывать его самостоятельно.

Таким образом, это должно быть экранировано, как показано ниже

split("\\*")