我正在尝试编写一个检查前导和尾随空格的函数。它不应该删除它们,只是检查它们是否存在。我写了这个:
public static String checkWhitespace(String str)
{
if(str.charAt(0) == ' ' || str.charAt(str.length()-1) == ' ');
return "invalid";
}
但它正在抓住一切。我尝试使用"\\s+"
作为键,但它是一个字符串,它只让我检查字符。任何帮助都会很棒!
答案 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);
免责声明:我认为我的正则表达式是正确的,但我可能错了,我还没有机会测试它们。