私はLinuxでコマンド "wc file name"の機能を実装しようとしました。ファイル内ファイルに複数のスペースがある場合、ファイル内の単語を数えるには? - Java
- ライン
- 言葉
- バイト
: このコマンドは回数をカウントします。
Hex Description Hex Description
20 SPACE
21 EXCLAMATION MARK A1 INVERTED EXCLAMATION MARK
22 QUOTATION MARK A2 CENT SIGN
23 NUMBER SIGN A3 POUND SIGN
が異なるlenghtsと複数のスペースがあります。
public class wc {
public static void main(String[] args) throws IOException {
//counters
int charsCount = 0;
int wordsCount = 0;
int linesCount = 0;
Scanner in = null;
try(Scanner scanner = new Scanner(new BufferedReader(new FileReader(new File("Sample.txt"))))){
File file = new File("Sample.txt");
while (scanner.hasNextLine()) {
String tmpStr = scanner.nextLine();
if (!tmpStr.equalsIgnoreCase("")) {
String replaceAll = tmpStr.replaceAll("\\s+", "");
charsCount += replaceAll.length();
wordsCount += tmpStr.split(" ").length;
}
++linesCount;
}
System.out.println("# of chars: " + charsCount);
System.out.println("# of words: " + wordsCount);
System.out.println("# of lines: " + linesCount);
System.out.println("# of bytes: " + file.length());
}
}
}
問題は、ファイルにこのようなテキストがあるということです。
は、ここに私のコードです。ときどき倍以上になることもあります。どのように私のコードを正しく数えることができるようにリファクタリングするのですか?複数のスペースを取り除く方法は?あなたは、単に\\s+
(複数whitspace)に分割することができるように
Iは、空の文字列ですべての乗算スペースを置き換える、tmpStrを作成することによって、その方法を用いました。なぜ私はそれに気づかなかったのですか...? – JeyKey