请您告诉我如何检查以多个下划线结尾的行。
能够检查字符串是否以下划线结尾但无法获得行尾的下划线数量。
根据下划线数量,我需要指定localNumberOfColumns
if(line.endsWith("_")){
localNumberOfColumns=NumberOfColumns-1;
}else{
localNumberOfColumns=NumberOfColumns;
}
答案 0 :(得分:2)
我首先想到的只是将输入字符串的长度与字符串的长度进行比较,并删除所有最终的下划线。
String threeUS = "abc123___";
int numUS = threeUS.length() - threeUS.replaceAll("(?:_)*$", "").length();
System.out.println("Number of underscores: " + numUS);
<强>输出:强>
Number of underscores: 3
在这里演示:
答案 1 :(得分:2)
您可以split()
所有最终下划线,然后将原始输入的长度与输入的长度进行比较,并删除下划线:
String s = "abc123___";
String sWithoutUnderscores = s.split("_*$")[0];
int numberOfUnderscores = s.length() - sWithoutUnderscores.length();
<强>更新强>
正如评论中所指出的,上述解决方案在字符串仅包含下划线的情况下失败。如果您的域中存在这种可能性,请考虑使用Java的模式匹配实用程序:
String s = "abc123___";
Matcher matcher = Pattern.compile("_*$").matcher(s);
int numberOfUnderscores = matcher.find() ? matcher.group().length() : 0;