2012-04-08 3 views
27

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

s= "ddjdjdj+kfkfkf"; 

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

} 

но оленья кожа дать ожидаемую result.Any идею?

+2

Пожалуйста, прочитайте http://tinyurl.com/so-hints - это бесполезно сказать, что это не дает ожидаемого результата, не говоря, что вы ожидали и что вы на самом деле получил. –

ответ

61

Вы должны вместо этого:

if(s.contains("+")) 

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


EDIT:

String s = "ddjdjdj+kfkfkf"; 

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

ВЫВОД:

ddjdjdj 
+0

Это не получает часть перед плюсом, хотя это и звучит так, как это действительно хочет OP. –

+0

Когда я отправил свой комментарий, ваш ответ * только * содержал вызов 'String.contains'. –

+0

(Только что посмотрел на вопрос, я пропустил тот факт, что он уже звонил содержит. Слишком рано. Doh. Но указывая, что остальная часть кода уже была в порядке, было бы полезно ...) –

9

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

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 (либо встроенный в версии или гуавы) вам не нужно проверьте, содержит ли он + в первую очередь - если это не так, в любом случае будет только один результат. Очевидно, что это вопрос эффективности, но это проще код:

// Calling split unconditionally 
String[] parts = s.split("\\+"); 
s = parts[0]; 

Обратите внимание, что запись String[] parts предпочтительнее String parts[] - это гораздо более идиоматических код Java.

+0

Удивительное решение. Спасибо огромное! –

0

[+] проще

String s = "ddjdjdj+kfkfkf"; 

    if(s.contains ("+")) 
    { 
     String parts[] = s.split("[+]"); 
     s = parts[0]; // i want to strip part after + 
    } 
    System.out.println(s); 
Смежные вопросы