如何检查一个包含空格的子字符串是否在一个字符串中?

3

假设我有一个java字符串如下:

"this is {my string: } ok"

注意,各个字符之间可能有任意数量的空格。我该如何检查上述字符串是否只包含子字符串:

"{my string: }"

非常感谢!


空格只是一个干扰项 - 它们与任何其他字符一样处理,并且对于任何正常的子字符串搜索函数都没有影响。 - Alnitak
6个回答

3
如果你想查看一个字符串是否包含另一个特定的字符序列,你可以像这样做:
String stringToTest = "blah blah blah";

if(stringToTest.contains("blah")){
    return true;
}

你也可以使用matches方法。关于匹配字符串的详细说明,我建议你查看Java Oracle的正则表达式教程:

http://docs.oracle.com/javase/tutorial/essential/regex/index.html

祝好,

Jamie


1
如果您的匹配字符串中每个字符之间有任意数量的空格,我认为在搜索之前最好从要匹配的字符串中删除所有空格。例如:
String searchedString = "this is {my string: } ok";
String stringToMatch = "{my string: }";
boolean foundMatch = searchedString.replaceAll(" ", "").contains(stringToMatch.replaceAll(" ",""));

0
为此,您需要使用String#contains(CharSequence)

请注意,各个字符之间可以有任意数量的空格。

为此,使用String#trim()方法返回一个字符串的副本,其中省略了前导和尾随空格。
例如:
String myStr = "this is {my string: } ok";
if (myStr.trim().contains("{my string: }")) {
    //Do something.
} 

0
将所有内容放入一个字符串变量中,比如说s,然后执行s.contains("{my string: }");如果{s:my string}在s中,则返回true。

0

最简单的方法是从两个字符串中删除所有空格。

return stringToSearch.replaceAll("\s", "").contains(
  stringToFind.replaceAll("\s", ""));

0

查找正则表达式

\{\s*my\s+string:\s*\}

此正则表达式匹配包含以下序列的任何字符串:

  1. 左括号
  2. 零个或多个空格
  3. 'my'
  4. 一个或多个空格
  5. 'string:'
  6. 零个或多个空格
  7. 右括号

这里的“空格”指任何空白字符(制表符、空格、换行符、回车符)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接