2012-04-08 172 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 - 這是沒用的,說這不會給預期的結果不說你期待什麼,你竟得到。 – 2012-04-08 06:21:40

回答

61

你需要這個來代替:

方法 String
if(s.contains("+")) 

contains()類沒有采取正則表達式作爲一個參數,它需要正常的文本。


編輯:

String s = "ddjdjdj+kfkfkf"; 

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

OUTPUT:

ddjdjdj 
+0

雖然沒有得到加分之前的部分,這聽起來像OP真正想要的。 – 2012-04-08 06:21:00

+0

當我發表我的評論時,你的答案*只包含對'String.contains'的調用。 – 2012-04-08 06:38:54

+0

(剛剛看過這個問題,我錯過了他已經在調用contains的事實,現在還爲時過早,但是指出其餘的代碼已經可以用了......) – 2012-04-08 06:46:25

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

驚人的解決方案。非常感謝! – 2017-12-20 21:21:17

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); 
相關問題