检查字符串是否包含制表符和任何非空格字符



我想检查给定的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.*")

最新更新