以多个下划线结尾的行

时间:2017-06-26 01:37:46

标签: java

请您告诉我如何检查以多个下划线结尾的行。

能够检查字符串是否以下划线结尾但无法获得行尾的下划线数量。

根据下划线数量,我需要指定localNumberOfColumns

if(line.endsWith("_")){
    localNumberOfColumns=NumberOfColumns-1;
}else{
    localNumberOfColumns=NumberOfColumns;
}

2 个答案:

答案 0 :(得分:2)

我首先想到的只是将输入字符串的长度与字符串的长度进行比较,并删除所有最终的下划线。

String threeUS = "abc123___";
int numUS = threeUS.length() - threeUS.replaceAll("(?:_)*$", "").length();
System.out.println("Number of underscores: " + numUS);

<强>输出:

Number of underscores: 3

在这里演示:

Rextester

答案 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;