我想检查字符串是否包含特定的子字符串并使用CONTAINS()。
但问题在于空间。
ex- str1 =“c not in(5,6)”
我想检查str是否包含NOT IN所以我使用str.contains(“not in”)..
但问题是NOT和IN之间的空间没有决定,即也可以有5个空格..
如何解决我可以找到不在其中的任何空格的子字符串......
答案 0 :(得分:6)
使用regular expression(Pattern
)获取与您的字符串匹配的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