2

我正在尝试编写一个检查前导和尾随空格的函数。它不应该删除它们,只需检查它们是否存在。我写了这个:

  public static String checkWhitespace(String str)
  {
      if(str.charAt(0) == ' ' || str.charAt(str.length()-1) == ' ');
            return "invalid";
  } 

但它抓住了一切。我尝试使用"\\s+"作为键,但它是一个字符串,它只让我检查字符。任何帮助都是极好的!

4

3 回答 3

14

你可以做

return str.trim().equals(str) ? "valid": "invalid";
于 2013-10-09T15:24:40.427 回答
4

您可以使用Character.isWhitespace而不是您建议的“\\s+”正则表达式。

public static String checkWhitespace(String str) {
    if (Character.isWhitespace(str.charAt(0)) || Character.isWhitespace(str.charAt(str.length() - 1))) {
        return "invalid";
    }
}

顺便说一句,语句末尾的分号if可能会让您感到困惑。这将导致它始终执行return "invalid"

于 2013-10-09T15:28:10.100 回答
0

原因"\\s+"不起作用是因为您需要使用 Java 的 Regex Matcher\Pattern 类来检查正则表达式。

String input = "   blah   ";
String regexLeadingWhitespace = "\\s+.*";
String regexTrailingWhitespace = ".*\\s+";

boolean leadingMatches = Pattern.matches(regexLeadingWhitespace, input);
boolean trailingMatches = Pattern.matches(regexTrailingWhitespace, input);

免责声明:我认为我的正则表达式是正确的,但我可能是错的,我还没有机会测试它们。

Java 正则表达式匹配器教程

于 2013-10-09T15:48:20.417 回答