Я хочу разбить строку, содержащую такой контент:
a$b$c
но когда я использую:
String data=...
data.split("$");
он не распознает $и не разделяет строку, но когда я заменяю $на некоторую букву как X, она работает. есть ли у кого-нибудь идеи?
Я хочу разбить строку, содержащую такой контент:
a$b$c
но когда я использую:
String data=...
data.split("$");
он не распознает $и не разделяет строку, но когда я заменяю $на некоторую букву как X, она работает. есть ли у кого-нибудь идеи?
Функция split принимает регулярное выражение, а не строку, чтобы соответствовать. В вашем регулярном выражении используется специальный символ - в этом случае "$" - поэтому вам нужно будет изменить его, чтобы избежать этого символа:
String line = ...
String[] lineData = line.split("\\$");
Также обратите внимание, что split возвращает массив строк. Строки неизменяемы, поэтому их нельзя изменить. Любые изменения, внесенные в String, будут возвращены в новой String, и оригинал не будет изменен. Следовательно, выше lineData = line.split("\\$");
.
Метод split принимает String как первый параметр, который затем интерпретируется как регулярное выражение.
Знак доллара является конкретным оператором в регулярных выражениях, поэтому вам нужно избегать его таким образом, чтобы получить то, что вы хотите:
String data = ...
String[] parts = data.split("\\$");
Или, если разделитель может измениться, вы можете быть более общим следующим образом:
String data = ...
String[] parts = data.split(java.util.regex.Pattern.quote("$"));
split()
использует регулярное выражение в качестве параметра. Вы должны вызвать split( "\\$" )
, потому что $
- это регулярное выражение для "конца строки".
String.split() в Java принимает аргумент String, который является регулярным выражением. Символ '$' в регулярном выражении означает конец строки. Вы можете использовать escape-последовательность ( "\\ $" ), если вы ищете знак доллара в строке.
Источники:
String - API Java
Pattern - API Java
$- специальный символ в регулярных выражениях, представляющих конец строки. Чтобы соответствовать знаку доллара, используйте "\\$"
.
У вас может быть проблема с символами uniCode для неразрывных пробелов. Попробуйте...
String[] elements = myString.split("[\\s\\xA0]+"); //include uniCode non-breaking