我想检查给定的String
是否以给定的tabs
+任何character
开头,但white-space-character
。这是我尝试过的,但它不起作用:
public static boolean hasCorrectIndentation(String line, String tabs) {
return line.matches(tabs + "\S+");
}
示例 1:
hasCorrectIndentation("public class inputFile {", ""))
输出:false
示例 2:
hasCorrectIndentation(" public class inputFile {", "t"))
输出:false
您的问题是String.matches
(相当于Pattern.matches
(有效地将字符串锚点的开头和结尾添加到正则表达式中。从Matcher
文档中:
match 方法尝试将整个输入序列与模式匹配。
所以
line.matches(tabs + "\S+")
相当于
line.matches("^" + tabs + "\S+$")
由于该行的其余部分(public
之后(有空格,因此匹配失败。您需要在第一个非空格字符之后允许空格,使用如下内容:
line.matches(tabs + "\S.*")