41

文字列に+文字が含まれているかどうかを確認したいのですが、次のコードを試してみました

s= "ddjdjdj+kfkfkf";

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

}

しかし、それは期待される結果を与えません。何か考えはありますか?

4

3 に答える 3

94

代わりにこれが必要です:

if(s.contains("+"))

contains()クラスのメソッドはString、パラメーターとして正規表現を取りません。通常のテキストを取ります。


編集:

String s = "ddjdjdj+kfkfkf";

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

出力:

ddjdjdj
于 2012-04-08T06:17:26.920 に答える
13

なぜだけではないのですか?

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のいずれか)を使用する場合は+、最初に含まれているかどうかを確認する必要はありません。含まれていない場合は、とにかく1つの結果しかありません。明らかに効率の問題がありますが、それはより単純なコードです:

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

書き込みString[] partsが優先されることに注意してくださいString parts[]-それははるかに慣用的なJavaコードです。

于 2012-04-08T06:17:32.007 に答える
1

[+]は簡単です

    String s = "ddjdjdj+kfkfkf";

    if(s.contains ("+"))
    {
        String parts[] = s.split("[+]");
        s =  parts[0]; // i want to strip part after  +
    }
    System.out.println(s);
于 2012-04-08T06:25:58.960 に答える