文字列に+文字が含まれているかどうかを確認したいのですが、次のコードを試してみました
s= "ddjdjdj+kfkfkf";
if(s.contains ("\\+"){
String parts[] = s.split("\\+);
s= parts[0]; // i want to strip part after +
}
しかし、それは期待される結果を与えません。何か考えはありますか?
代わりにこれが必要です:
if(s.contains("+"))
contains()
クラスのメソッドはString
、パラメーターとして正規表現を取りません。通常のテキストを取ります。
編集:
String s = "ddjdjdj+kfkfkf";
if(s.contains("+"))
{
String parts[] = s.split("\\+");
System.out.print(parts[0]);
}
出力:
ddjdjdj
なぜだけではないのですか?
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コードです。
[+]は簡単です
String s = "ddjdjdj+kfkfkf";
if(s.contains ("+"))
{
String parts[] = s.split("[+]");
s = parts[0]; // i want to strip part after +
}
System.out.println(s);