亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從計數中排除空格?

如何從計數中排除空格?

慕的地6264312 2022-09-14 17:43:48
我必須計算文件“測試.txt”中有多少字母(字符)。我把它記下來了,但它也包括了空間,我不想包括。關于如何做到這一點有什么建議嗎?非常感謝。import java.io.*;class EnglishAnalysis{    public static void main(String[] args)    {        try        {            FileReader fr = new FileReader("test.txt");            BufferedReader br = new BufferedReader(fr);            int count = 0;            String lineCharacters [];            String line;            line = br.readLine();            while (line != null)            {                 lineCharacters = line.split("");                 for (int i = 0; i < lineCharacters.length; i++)                 {                     count ++;                     line = br.readLine();                 }                 System.out.println(count);             }             br.close();        }        catch (IOException e) {}    }}
查看完整描述

5 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

或者(Java 8 +),你可以用 和 方法非常輕松地做到這一點:lines()chars()


BufferedReader br = new BufferedReader(fr);

long count = br.lines().flatMapToInt(e -> e.codePoints()).filter(e -> !Character.isWhiteSpace(e)).count();

這將占用文件的行,將它們平面映射到字符,過濾掉任何空格,然后計算元素Stream<String>String::codePoints


查看完整回答
反對 回復 2022-09-14
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

為什么不在從所有空格中清除每行后添加每行的字符數:


    while (line != null) {

        count += line.replaceAll("\\s+", "").length();

        line = br.readLine();

    }


查看完整回答
反對 回復 2022-09-14
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

也許我錯過了一些東西,但我不明白分裂有什么好處。我會這樣做:


public static void main(String[] args) {

    try {

        FileReader fr = new FileReader("/tmp/test.txt");

        BufferedReader br = new BufferedReader(fr);

        int count = 0;

        String line;

        line = br.readLine();

        while (line != null) {

            for (int i = 0; i < line.length(); i++)

                if (!Character.isWhitespace(line.charAt(i)))

                    count++;

            line = br.readLine();

        }

        br.close();

        System.out.println(count);

    } catch (IOException ex) {

        System.out.println(ex);

    }

}

具體來說,我認為根本不需要修改輸入,通過調用split,制作額外的副本,執行查找/替換等。這一切都需要額外的時間和空間。


實際上,我看不出有任何理由打擾按行處理文件:


public static void main(String[] args) {

    try {

        FileReader fr = new FileReader("/tmp/test.txt");

        BufferedReader br = new BufferedReader(fr);

        int count = 0;

        while (true) {

            int c = br.read();

            if (c < 0)

                break;

            if (!Character.isWhitespace(c))

                count++;

        }

        br.close();

        System.out.println(count);

    } catch (IOException ex) {

        System.out.println(ex);

    }

}

使用緩沖讀取器本身可以讓您有效地不逐個字符讀取文件。因此,通過這種方式可以保存每行的額外副本。


查看完整回答
反對 回復 2022-09-14
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

字符類具有“是白色空間()”方法


java.lang.Character.isWhitespace(字符 ch)


while (line != null)

  {

    for (int i = 0; i < line.length(); i++)

    {

      if (!Character.isWhitespace(line.charAt(i)))

         count ++;

      line = br.readLine();

    }

    System.out.println(count);

  }


查看完整回答
反對 回復 2022-09-14
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

為什么不在執行拆分和計數之前從字符串中刪除空格?


一種方法是使用正則表達式:


while (line != null)

{

  line.replaceAll("\\s+","");

  lineCharacters = line.split("");

  ...

}


查看完整回答
反對 回復 2022-09-14
  • 5 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號