Функция 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]
Почему это не шина на '$'?
Ответы
Ответ 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]);
}