如何在字符串中查找空格?

68

如何检查一个字符串是否包含空格字符、空白字符或 " "。如果可能,请提供一个Java示例。

例如:String = "test word";

Java示例代码: boolean containsWhitespace = str.contains(" ");

3
“空间”是什么? 它是“空无一物”吗? - Dominic Rodger
10
@Dominic - 当你清空一个“满的空间”时,你得到的就是这个结果。显然!!! - Stephen C
14个回答

92

如果要检查一个字符串是否包含空格,使用Matcher并调用其find方法。

Pattern pattern = Pattern.compile("\\s");
Matcher matcher = pattern.matcher(s);
boolean found = matcher.find();

如果您想检查字符串是否仅由空格组成,那么可以使用String.matches方法:

boolean isWhitespace = s.matches("^\\s*$");

2
空字符串是否包含空格?bool 应该是 boolean 吧。 - Joni

33

检查一个字符串是否至少包含一个空格字符:

public static boolean containsWhiteSpace(final String testCode){
    if(testCode != null){
        for(int i = 0; i < testCode.length(); i++){
            if(Character.isWhitespace(testCode.charAt(i))){
                return true;
            }
        }
    }
    return false;
}

参考:


使用Guava库,这个问题变得更加简单:

return CharMatcher.WHITESPACE.matchesAnyOf(testCode);

CharMatcher.WHITESPACE 对于 Unicode 的支持也更加全面。


4
我猜这段代码不完全支持Unicode,因为:“这个方法无法处理补充字符。要支持所有Unicode字符,包括补充字符,请使用isWhitespace(int)方法。” - Michael Konietzka
真的,但我想知道Unicode范围超出0xffff定义了多少个新的空格字符... - Sean Patrick Floyd
2
我完全不知道,我只是为了完整性而提到它。 - Michael Konietzka
使用 Character.isWhitespace(testCode.charAt(i)) || Character.isSpaceChar(testCode.charAt(i)) 代替。 - logbasex

25

这将判断是否有任何空格:

可以通过循环实现:

for (char c : s.toCharArray()) {
    if (Character.isWhitespace(c)) {
       return true;
    }
}
或者
s.matches(".*\\s+.*")

StringUtils.isBlank(s)会告诉你是否只有空格。


2
很好的全面回答(+1),但是循环变量可以在不创建新字符数组的情况下完成(请参见我的答案) - Sean Patrick Floyd
@seanizer 真的。+1 给你。因为那个 :) - Bozho
注意:isWhitespace方法不考虑不换行空格。 - Soufiane Roui

12

使用Apache Commons StringUtils

StringUtils.containsWhitespace(str)

3

使用这段代码,对我来说是更好的解决方案。

public static boolean containsWhiteSpace(String line){
    boolean space= false; 
    if(line != null){


        for(int i = 0; i < line.length(); i++){

            if(line.charAt(i) == ' '){
            space= true;
            }

        }
    }
    return space;
}

1
代码不够高效,也没有考虑 Unicode。 - Imtiaz Shakil Siddique
1
它只检测空格,而不是所有的空白字符。 - user207421

2
public static void main(String[] args) {
    System.out.println("test word".contains(" "));
}

3
这个答案没有检查所有的空格。 - james.garriss

2
您可以使用正则表达式来确定是否存在空格字符。 \s
有关正则表达式的更多信息,请单击此处

你可以通过提供使用这个正则表达式的Java代码来改进这个答案。 - james.garriss

1
你可以使用 charAt() 函数来查找字符串中的空格。
 public class Test {
  public static void main(String args[]) {
   String fav="Hi Testing  12 3";
   int counter=0;
   for( int i=0; i<fav.length(); i++ ) {
    if(fav.charAt(i) == ' ' ) {
     counter++;
      }
     }
    System.out.println("Number of spaces "+ counter);
    //This will print Number of spaces 4
   }
  }

0
String str = "Test Word";
            if(str.indexOf(' ') != -1){
                return true;
            } else{
                return false;
            }

要清楚明确,在你的代码中加入一个例子,比如注释。 - pirs

0
也许我回答有点晚了,但你可以尝试以下解决方案之一:
public static boolean containsWhiteSpace(final String input) {
        if (isNotEmpty(input)) {
            for (int i = 0; i < input.length(); i++) {
                if (Character.isWhitespace(input.charAt(i)) || Character.isSpaceChar(input.charAt(i))) {
                    return true;
                }
            }
        }
        return false;
    }

或者

public static boolean containsWhiteSpace(final String input) {
        return CharMatcher.whitespace().matchesAnyOf(input);
    }

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