Как проверить, содержит ли строка символ "+"
Я хочу проверить, содержит ли моя строка символ+. Я пробовал следующий код
s= "ddjdjdj+kfkfkf";
if(s.contains ("\\+"){
String parts[] = s.split("\\+);
s= parts[0]; // i want to strip part after +
}
но он не дает ожидаемого результата. Любая идея?
Ответы
Ответ 1
Вместо этого вам нужно:
if(s.contains("+"))
contains()
метод String
class не принимает регулярное выражение в качестве параметра, он принимает нормальный текст.
EDIT:
String s = "ddjdjdj+kfkfkf";
if(s.contains("+"))
{
String parts[] = s.split("\\+");
System.out.print(parts[0]);
}
ВЫВОД:
ddjdjdj
Ответ 2
Почему не просто:
int plusIndex = s.indexOf("+");
if (plusIndex != -1) {
String before = s.substring(0, plusIndex);
// Use before
}
Не совсем понятно, почему ваша оригинальная версия не работает, но тогда вы не сказали, что на самом деле произошло. Если вы хотите разделить не используя регулярные выражения, я лично использовал бы Guava:
Iterable<String> bits = Splitter.on('+').split(s);
String firstPart = Iterables.getFirst(bits, "");
Если вы собираетесь использовать split
(либо встроенную версию, либо Guava), вам не нужно сначала проверять, содержит ли она +
- если это не так, будет только один результат так или иначе. Очевидно, есть вопрос эффективности, но это более простой код:
// Calling split unconditionally
String[] parts = s.split("\\+");
s = parts[0];
Обратите внимание, что запись String[] parts
предпочтительнее String parts[]
- это гораздо более идиоматический код Java.
Ответ 3
[+] проще
String s = "ddjdjdj+kfkfkf";
if(s.contains ("+"))
{
String parts[] = s.split("[+]");
s = parts[0]; // i want to strip part after +
}
System.out.println(s);