2012-02-15 7 views
1

文字列に特定のサブ文字列が含まれているかどうかを確認し、そのためにCONTAINS()を使用したいとします。Javaで空白文字列の部分文字列を検索する方法は?

しかし、ここで問題はスペースです。

EX- STR1 =

"(5,6)でないC" 私はstrが私は( "NOT IN")str.containsを使用していますされていない含まれているかどうかを確認したい。..

しかし、問題はそのここ

ない...とINが決まっていないつまり、私がいない中の間にスペースのいずれかがないとのようなサブ文字列を見つけることができることを解決する方法も5つのスペース..

が可能との間のスペースであります

+2

Javaで正規表現を使用して見てみましょう。 –

+0

正規表現 –

答えて

3

あなたはregexを使用する必要があります。"not\\s+in"

String s = "c not in(5,6)"; 
    Matcher matcher = Pattern.compile("not\\s+in").matcher(s); 
    System.out.println(matcher.find()); 

説明:\\s+は空白のいずれかの種類を意味し、[タブも許容さ]、および少なくとも一つを繰り返す必要があります[任意の数> = 1受諾されます]。あなただけのスペースが必要な場合
は、タブはあなただけのこの操作を行うことができ、一般的には"not +in"

+0

それは働いています...ありがとう... – Sam

+0

これは動作していますが、知識のためだけです。 これらのスペースを1に減らす方法はありますか? – Sam

+2

@Sam:再度、regex: 's.replaceAll(" \\ s + "、" ")'を使用すると、すべての空白が1つに置き換えられます。 – amit

6

regular expressionPattern)を使用してあなたの文字列に一致するようにを調整してください。 matches(String regexp)という文字列方法があること

public static void main(String[] args) { 

    Matcher m = Pattern.compile("not\\s+in").matcher("c not in(5,6)"); 

    if (m.find()) 
     System.out.println("matches"); 
} 

正規表現は、"not\\s+in"(「しない」、「中」に続くスペース文字の数、続いて)であるべきです。あなたは正規表現".*not\\s+in.*"を使ってマッチを得ることができますが、実際にはパターンマッチングを実行するための良い方法ではありません。

+0

を使用しています...ありがとう... – Sam

+0

これは動作していますが、知識のためだけです。 これらのスペースを1に減らす方法はありますか? – Sam

+1

'str = str.replaceAll(" not \\ s + in "、" not in ")' – dacwe

-2

にあなたの正規表現を変更せずに:

if (string.indexOf("substring") > -1)... //It's there 
+0

これは "not"と "in"の間の可変数のスペースをどのように処理するのですか? – Paul

+0

件名は参照しましたが、質問自体は参照しませんでした。 – Vic

-1

int result = str1.indexOf ("not in"); 

if (result != -1) 
{ 
     // It contains "not in" 
} 
else if (result == -1) 
{ 
    // It does not contain "not in" 
} 
+0

"not"と "in"の間に複数のスペースがある場合、これは機能しません。 – Carsten

+0

問題を読んでください、OPは "not"と "in"の間に複数のスペースがあることを示します – Nim

+0

質問に記載されているように、 "not"と "in"の間には可変数のスペースがあります。 – Paul

2

String.matches()メソッドを使用して、次のことを試してみてください、文字列が正規表現(docs)と一致するかどうかをチェックします。

あなたの場合:

String str1 = "c not in(5,6)"; 
if (str1.matches(".*not\\s+in.*")) { 
    // do something 
    // the string contains "not in" 
} 
0

小文字を区別しないケース:あまりにドット.として改行を考慮(?i)

(?s)

str1.matches("(?is).*not\\s+in.*") 
関連する問題