如何在Java中找到带有空格的字符串的子字符串?

时间:2012-02-15 12:59:22

标签: java string substring

我想检查字符串是否包含特定的子字符串并使用CONTAINS()。

但问题在于空间。

ex- str1 =“c not in(5,6)”

我想检查str是否包含NOT IN所以我使用str.contains(“not in”)..

但问题是NOT和IN之间的空间没有决定,即也可以有5个空格..

如何解决我可以找到不在其中的任何空格的子字符串......

6 个答案:

答案 0 :(得分:6)

使用regular expressionPattern)获取与您的字符串匹配的Matcher

正则表达式应为"not\\s+in"(“不是”,后跟多个空格字符,后跟“in”):

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");
} 

请注意,有一个名为matches(String regexp)的String方法。您可以使用正则表达式".*not\\s+in.*"来获得匹配,但这并不是执行模式匹配的好方法。

答案 1 :(得分:4)

您应该使用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"

答案 2 :(得分:2)

使用String.matches()方法检查字符串是否与正则表达式匹配(docs)。

在你的情况下:

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

答案 3 :(得分:0)

不区分大小写:(?i)

将换行符也视为点.(?s)

str1.matches("(?is).*not\\s+in.*")

答案 4 :(得分:-1)

请尝试以下,

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

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

答案 5 :(得分:-2)

一般来说,你可以这样做:

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