2017-05-07 3 views
1

Ich habe diese Zeichenfolge, die "Tulos: +1" enthält, oft und ich versuche zu finden, wie oft "Tulos: +1" in dieser Zeichenfolge auftritt, aber es funktioniert nicht .Kann ein Muster in einem String nicht finden

Es wird kein Fehler zurückgegeben. Es findet es einfach nicht. Dieser Toast dient nur zum Testen. Und es sagt immer, dass count2 = 0. Übrigens funktioniert diese Abfrage gut.

Ich denke, das Problem wird durch das Plus-Zeichen verursacht, aber ich kann es nicht herausfinden.

count2 = 0; 

while(query1.moveToNext()){ 

    String str2 = query1.getString(0); 

    Toast.makeText(kortti.this, 
      str2 + count2, Toast.LENGTH_LONG).show(); 

    Pattern p2 = Pattern.compile("Tulos: +1"); 
    Matcher m2 = p2.matcher(str2); 
    while (m2.find()){ 
     count2 +=1; 
     System.out.println(count2); 
    } 

} 
+0

Es war das Plus singen ... Ich wusste einfach nicht, was zu tun ist. Also ist der richtige Weg, "Tulos:" + "\\ +" + "1" zu schreiben. Ich musste nur hinzufügen \\ + – Manutti

Antwort

0

Der String "Tulos: +1" sagt Tulos:, gefolgt von ein oder mehrere Raum " " Zeichen, dann 1.

Wenn Sie ein tatsächliches Plus wollen, dann sollten Sie es entkommen.

"Tulos: \\+1"

+0

Ja, ich habe das herausgefunden (im Kommentar), aber immer noch danke! – Manutti

0

nur versuchen: String.indexOf (String str, int fromindex) hat eine hohe Leistung

int count = 0; 
int start = 0; 
while(true) { 
    int index = str2.indexOf("Tulos: +1", start); 
    if (index < 0) break; 

    start += 9; // 9 is length of "Tulos: +1" 
    count++; 
} 
return count; 
+0

Keine Notwendigkeit, aber danke für den Kommentar! – Manutti

+0

Sie könnten '' Tulos: +1 ".length()' übrigens verwenden –

Verwandte Themen