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

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

s= "ddjdjdj+kfkfkf";

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

}

но это не дает ожидаемого результата. Есть идеи?


person user93796    schedule 08.04.2012    source источник
comment
Прочтите tinyurl.com/so-hints - бесполезно говорить, что это не дает ожидаемого результата. не говоря, чего вы ожидали и что получили на самом деле.   -  person Jon Skeet    schedule 08.04.2012


Ответы (3)


Вместо этого вам понадобится:

if(s.contains("+"))

_2 _ метод класса String не принимает регулярное выражение в качестве параметра, принимает обычный текст.


РЕДАКТИРОВАТЬ:

String s = "ddjdjdj+kfkfkf";

if(s.contains("+"))
{
    String parts[] = s.split("\\+");
    System.out.print(parts[0]);
}

ВЫХОД:

ddjdjdj
person Eng.Fouad    schedule 08.04.2012
comment
Тем не менее, это не часть перед плюсом, что, похоже, действительно хочет OP. - person Jon Skeet; 08.04.2012
comment
Когда я разместил свой комментарий, ваш ответ только содержал вызов String.contains. - person Jon Skeet; 08.04.2012
comment
(Только что взглянув на вопрос еще раз, я пропустил тот факт, что он уже звонил, содержит. Это слишком рано. Дох. Но указать, что остальная часть кода уже в порядке, было бы полезно ...) - person Jon Skeet; 08.04.2012

Почему не просто:

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.

person Jon Skeet    schedule 08.04.2012
comment
Замечательное решение. Большое спасибо! - person Vlad Ivchenko; 21.12.2017

[+] проще

    String s = "ddjdjdj+kfkfkf";

    if(s.contains ("+"))
    {
        String parts[] = s.split("[+]");
        s =  parts[0]; // i want to strip part after  +
    }
    System.out.println(s);
person cloudygoose    schedule 08.04.2012