Java 检查前导/尾随空格

Java 检查前导/尾随空格,java,Java,我正在尝试编写一个函数来检查前导空格和尾随空格。它不应该移除它们,只是检查它们是否存在。我写道: public static String checkWhitespace(String str) { if(str.charAt(0) == ' ' || str.charAt(str.length()-1) == ' '); return "invalid"; } 但它抓住了一切。我尝试使用“\\s+”作为键,但它是一个字符串,只允许我检查字符。

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

  public static String checkWhitespace(String str)
  {
      if(str.charAt(0) == ' ' || str.charAt(str.length()-1) == ' ');
            return "invalid";
  } 
但它抓住了一切。我尝试使用
“\\s+”
作为键,但它是一个字符串,只允许我检查字符。任何帮助都会很棒

你可以这样做

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

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

您可以使用
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
语句末尾的分号可能会让您大吃一惊。这将导致它总是执行
返回“invalid”

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

public static String checkWhitespace(String str) {
    if (Character.isWhitespace(str.charAt(0)) || Character.isWhitespace(str.charAt(str.length() - 1))) {
        return "invalid";
    }
}
顺便说一句,
if
语句末尾的分号可能会让您大吃一惊。这将导致它总是执行
返回“invalid”

原因是
“\\s+”
不起作用,因为需要使用Java的Regex Matcher\Pattern类来检查Regex

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

boolean leadingMatches = Pattern.matches(regexLeadingWhitespace, input);
boolean trailingMatches = Pattern.matches(regexTrailingWhitespace, input);
免责声明:我认为我的正则表达式是正确的,但我可能错了,我还没有机会测试它们

之所以
“\\s+”
不起作用,是因为需要使用Java的正则表达式匹配器\模式类来检查正则表达式

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

boolean leadingMatches = Pattern.matches(regexLeadingWhitespace, input);
boolean trailingMatches = Pattern.matches(regexTrailingWhitespace, input);
免责声明:我认为我的正则表达式是正确的,但我可能错了,我还没有机会测试它们


Nice oneliner(我手上的瞄准不好,我不小心投了反对票。)有趣的事实:你也可以使用
str.trim()==str
,因为返回“删除前导和尾随空格的字符串副本,或者如果没有前导或尾随空格的字符串副本。”所以可以检查引用是否相等而不是值。在处理字符串时,我个人仍然使用
.equals
,但我认为这是值得一提的有趣的事实:你也可以使用
str.trim()==str
,因为返回“删除前导和尾随空格的字符串副本,或者如果没有前导或尾随空格的字符串副本。”所以可以检查引用是否相等而不是值。在处理字符串时,我个人仍然使用
.equals
,但我认为这是值得一提的嗯哼,
字符(-1)
不起作用。您也没有检查有效索引(
str
可能为空)。True。我不是java程序员,所以我不确定-1是否是字符串上的有效索引。我主要是把
字符.isWhitespace
放在原始代码中,以便OP能有更好的想法。哎呀,看起来我把代码复制错了。已经做了太多的ruby.Ehem,
charAt(-1)
不起作用。您也没有检查有效索引(
str
可能为空)。True。我不是java程序员,所以我不确定-1是否是字符串上的有效索引。我主要是把
字符.isWhitespace
放在原始代码中,以便OP能有更好的想法。哎呀,看起来我把代码复制错了。我做的太多了。