Upv*_*ote 23 java java.util.scanner
我有一个文本文件,其中包含以下内容:
ac und
accipio annehmen
ad zu
adeo hinzugehen
...
Run Code Online (Sandbox Code Playgroud)
我读了文本文件并遍历这些行:
Scanner sc = new Scanner(new File("translate.txt"));
while(sc.hasNext()){
String line = sc.nextLine();
}
Run Code Online (Sandbox Code Playgroud)
每行有两个单词.java中是否有任何方法可以获取下一个单词,还是必须拆分行字符串来获取单词?
Chr*_*kar 26
您不一定要拆分该行,因为java.util.Scanner的默认分隔符是空格.
您可以在while语句中创建一个新的Scanner对象.
Scanner sc2 = null;
try {
sc2 = new Scanner(new File("translate.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while (sc2.hasNextLine()) {
Scanner s2 = new Scanner(sc2.nextLine());
while (s2.hasNext()) {
String s = s2.next();
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 12
您已经在代码的这一行中获得了下一行:
String line = sc.nextLine();
Run Code Online (Sandbox Code Playgroud)
为了获得一行的话,我建议使用:
String[] words = line.split(" ");
Run Code Online (Sandbox Code Playgroud)
小智 7
使用Scanners,最终会为每一行产生大量对象.您将为具有大文件的GC生成大量垃圾.而且,它比使用split()慢近三倍.
另一方面,如果按空格(line.split(" "))拆分,如果尝试读取具有不同空白分隔符的文件,代码将失败.如果split()希望你编写一个正则表达式,并且它确实匹配,那么使用它来匹配split("\\s")比空格字符更多的"空格"空格.
PS:对不起,我没有权利对已经给出的答案发表评论.
| 归档时间: |
|
| 查看次数: |
144846 次 |
| 最近记录: |