怎么算“;”排队

时间:2016-04-28 12:15:58

标签: java

我想算“;”从文本文件中排成一行。

实施例。在我的文本文件中

  • 案例1:int a; int b;
  • 案例2:int c;
  • 案例3:int x; int y; int z;

我的预期结果是

  • 第1行有2“;”在线
  • 第2行有1“;”在线
  • 第3行有3“;”在线

我的代码

Scanner (input);

while(in.hasNext()){

            String line = in.nextLine();
            in.hasNextLine();
            LOC++;
            if (line.length() >0){
                k = -1;

                if(line.indexOf(";") != 1){
                    while(true){
                        k = line.indexOf(";");
                        if(k<0)break;
                        cCommand++;
                    }

                }

            }
        }

System.out.println(output);

感谢您的回答。

5 个答案:

答案 0 :(得分:3)

您可以这样做:

int c=0;
for(char ch : line.toCharArray())
{
    if(ch==';') c++;
}

答案 1 :(得分:1)

简洁(但效率低下)的方法是从字符串中删除除;之外的所有内容,然后使用长度:

int numSemicolons = str.replaceAll("[^;]", "").length();

答案 2 :(得分:0)

您可以简单地从String对象中获取文件的整个输入 并且可以使用正则表达式或拆分(&#34 ;;&#34;)方法来获取否。任何模式(例如,split()的情况下的数组大小)。

如果只需要完全没有图案或逐行使用它。

答案 3 :(得分:0)

您可以使用Apache Common Lang

中的StringUtils
int count = StringUtils.countMatches("case 3: int x; int y; int z;", ";");

答案 4 :(得分:0)

我会使用commons.utils.FileUtils和StringUtils,如下所示:

LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
    while (it.hasNext()) {
    String line = it.nextLine();
    int countThe = StringUtils.countMatches(line, ";");
    }
} finally {
    it.close();
}