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

Как проверить, содержит ли строка символ "+"

Я хочу проверить, содержит ли моя строка символ+. Я пробовал следующий код

s= "ddjdjdj+kfkfkf";

if(s.contains ("\\+"){
 String parts[] = s.split("\\+);
  s=  parts[0]; // i want to strip part after  +

}

но он не дает ожидаемого результата. Любая идея?

4b9b3361

Ответ 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);