检查前导/尾随空格

时间:2013-10-09 15:23:21

标签: java

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

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

但它正在抓住一切。我尝试使用"\\s+"作为键,但它是一个字符串,它只让我检查字符。任何帮助都会很棒!

3 个答案:

答案 0 :(得分:9)

你可以做到

return str.trim().equals(str) ? "valid": "invalid";

答案 1 :(得分: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"

答案 2 :(得分: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 Regex Matacher Tutorial