web-dev-qa-db-ja.com

文字列に「+」文字が含まれているかどうかを確認する方法

文字列に+文字が含まれているかどうかを確認したい

s= "ddjdjdj+kfkfkf";

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

}

しかし、期待どおりの結果は得られません。

35
user93796

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

if(s.contains("+"))

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


編集:

String s = "ddjdjdj+kfkfkf";

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

出力:

ddjdjdj
77
Eng.Fouad

なぜだけではありません:

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

元のバージョンが機能しなかった理由は明確ではありませんが、実際に何が起こったのかを言わなかったのです。正規表現を使用してnotを分割する場合、個人的に 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コードです。

11
Jon Skeet

[+]シンプルです

    String s = "ddjdjdj+kfkfkf";

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