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

Функция split() для '$' не работает

Я делаю простой код

String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("$").length;i++){
   System.out.println("I GOT IS :: "+splitString.split("$")[i]);
}

Когда я разбиваю, как

splitString.split("$")

Он дает мне вывод [122$23$56$rt]

Почему это не шина на '$'?

4b9b3361

Ответ 1

String.split() принимает регулярное выражение как аргумент, а $ - метасимвол в Java regex API. Поэтому вам нужно избежать этого:

String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("\\$").length;i++){
   System.out.println("I GOT IS :: "+splitString.split("\\$")[i]);
}

Другими метасимволами, поддерживаемыми Java regex API, являются: <([{\^-=!|]})?*+.>

Ответ 2

split(Pattern.quote("$"))

Я любимый.

См. Pattern#quote:

Возвращает строковый шаблон String для указанной строки.

Ваш код не работает, потому что $ имеет особое значение в регулярном выражении, а поскольку String#split принимает регулярное выражение в качестве аргумента, $ не интерпретируется как String "$", а как специальный метасимвол $.

Ответ 3

Побег. метод split() принимает регулярное выражение: split("\\$")

Ответ 4

попробуйте что-то вроде этого

String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("\\$").length;i++){
   System.out.println("I GOT IS :: "+splitString.split("$")[i]);
}

ПРИМЕЧАНИЕ: split() использует регулярное выражение.

В вашем регулярном выражении используется специальный символ, т.е. $

$ - это регулярное выражение для "конца строки".

Ответ 5

String splitString = "122$23$56$rt";
for(int i=0;i<splitString.length;i++){
   System.out.println("Now you GOT this :: "+split(Pattern.quote("$")));
}

Есть 12 символов со специальными значениями: обратная косая черта \, каретка ^, знак доллара $, период или точка., вертикальная полоса или символ трубы, знак вопроса?, звездочка или звезда *, плюс знак +, открывающая скобка (закрывающая скобка) и открывающая квадратная скобка [, открывающая фигурная скобка {, Эти специальные символы часто называют "метасимволами".

Таким образом, ваш $ также metacharacter, поскольку дефинизация говорит, что вы не можете разделить с помощью простой функции. Хотя вы должны использовать pattern в этом случае.

Спасибо..

Ответ 6

Побег, как

split("\\$")

вместо split ( "$" )

Ответ 7

String.split(), .match(), .replaceAll() - некоторые из методов, которые используют шаблон RegEx, и поэтому вы должны посмотреть на javadoc Класс шаблона:

Если ваш символ разделения является одним из символов шаблона, вы должны избежать его с помощью \\, в этом случае ваш раздельный вызов должен быть: .split("\\$")

Ответ 8

Он не будет работать, потому что split() принимает ввод как RegEx

String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("\\$").length;i++){
System.out.println("I GOT IS :: "+splitString.split("\\$")[i]);
}