2012-04-08 25 views
27

ich überprüfen möchten, ob meine Zeichenfolge a + character.I enthält folgenden Code versuchtwie überprüfen, ob Zeichenfolge enthält Zeichen ‚+‘

s= "ddjdjdj+kfkfkf"; 

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

} 

aber es doesnot erwartet result.Any Idee geben?

+2

Bitte lesen Sie http://tinyurl.com/so-hints - es sinnlos ist zu sagen, dass es nicht das erwartete Ergebnis nicht geben ohne zu sagen, was Sie erwartet und was Sie tatsächlich bekam. –

Antwort

61

Sie müssen dies statt:

if(s.contains("+")) 

contains() Methode der String Klasse nicht regulären Ausdruck als Parameter nimmt, dauert es normalen Text.


EDIT:

String s = "ddjdjdj+kfkfkf"; 

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

OUTPUT:

ddjdjdj 
+0

Das bringt den Teil nicht vor dem Plus, aber das klingt, als ob das OP wirklich will. –

+0

Als ich meinen Kommentar gepostet habe, enthielt Ihre Antwort * nur * den Aufruf von 'String.contains'. –

+0

(nachdem ich mir die Frage noch einmal angeschaut hatte, hatte ich die Tatsache verpasst, dass er bereits angerufen hatte. Es ist zu früh. Doh. Aber darauf hinzuweisen, dass der Rest des Codes schon in Ordnung gewesen wäre ... –

9

Warum nicht einfach:

int plusIndex = s.indexOf("+"); 
if (plusIndex != -1) { 
    String before = s.substring(0, plusIndex); 
    // Use before 
} 

Es ist nicht wirklich klar, warum deine ursprüngliche Version nicht funktioniert hat, aber dann hast du nicht gesagt, was wirklich passiert ist. Wenn Sie nicht mit regulären Ausdrücken teilen möchten, würde ich persönlich Guava verwenden:

Iterable<String> bits = Splitter.on('+').split(s); 
String firstPart = Iterables.getFirst(bits, ""); 

Wenn Sie vorhaben, split zu verwenden (entweder die integrierte Version oder Guava) Sie brauchen sich nicht zu prüfen Sie, ob es + zuerst enthält - wenn es nicht gibt, wird es sowieso nur ein Ergebnis geben. Offensichtlich gibt es eine Frage der Effizienz, aber es ist einfacher Code:

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

Beachten Sie, dass das Schreiben String[] parts über String parts[] bevorzugt wird - es ist viel mehr idiomatische Java-Code.

+0

Tolle Lösung. Ich danke dir sehr! –

0

[+] ist einfacher

String s = "ddjdjdj+kfkfkf"; 

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