Java 文件解析 - 逐字逐句
Java File Parsing - Go word by word
我有一个文件内容如下:
Sample.txt:
嗨,我叫约翰
我是一名工程师。你好吗
我想要的输出是一个字符串数组列表,例如 [Hi,my,name,is,john,and,I,am,an,engineer,.,How,are,you]
标准 java 函数将其解析为线,我会得到一个包含线的数组。我对应该使用哪种方法来获得以下输出感到困惑。
感谢任何帮助。
.nextLine()
将得到一整行,但 .next()
将逐字逐句
如果您将字符串作为整行获取,但只需要单词,您可以在单词上使用 .split(" ")
,因为这会 return 一个包含单个单词且没有空格的数组。如果你想在文件阅读中这样做,你可以使用类似下面的东西...
public ArrayList<String> readWords(File file) throws IOException {
ArrayList<String> words = new ArrayList<String>();
String cLine = "";
BufferedReader reader = new BufferedReader(new FileReader(file));
while ((cLine = reader.readLine()) != null) {
for (String word : cLine.split(" ")) {words.add(word);}
}
reader.close();
return words;
}
这将 return 一个 ArrayList<String>
包含文件中的所有单个单词。
希望对您有所帮助。
您可以使用 Scanner
class 和 .next()
方法结帐。
这将读取文件并将所有单词收集到字符串列表中。
编辑:更新以将标点符号等作为不同的词处理:
try {
List<String> words = Files.lines(Paths.get("/path/to/sample.txt"))
.map(line -> line.split("\b"))
.flatMap(Arrays::stream)
.filter(w -> !w.trim().isEmpty())
.collect(Collectors.toList());
return words;
} catch (IOException e) {
// handle error
}
我有一个文件内容如下:
Sample.txt: 嗨,我叫约翰 我是一名工程师。你好吗
我想要的输出是一个字符串数组列表,例如 [Hi,my,name,is,john,and,I,am,an,engineer,.,How,are,you]
标准 java 函数将其解析为线,我会得到一个包含线的数组。我对应该使用哪种方法来获得以下输出感到困惑。
感谢任何帮助。
.nextLine()
将得到一整行,但 .next()
将逐字逐句
如果您将字符串作为整行获取,但只需要单词,您可以在单词上使用 .split(" ")
,因为这会 return 一个包含单个单词且没有空格的数组。如果你想在文件阅读中这样做,你可以使用类似下面的东西...
public ArrayList<String> readWords(File file) throws IOException {
ArrayList<String> words = new ArrayList<String>();
String cLine = "";
BufferedReader reader = new BufferedReader(new FileReader(file));
while ((cLine = reader.readLine()) != null) {
for (String word : cLine.split(" ")) {words.add(word);}
}
reader.close();
return words;
}
这将 return 一个 ArrayList<String>
包含文件中的所有单个单词。
希望对您有所帮助。
您可以使用 Scanner
class 和 .next()
方法结帐。
这将读取文件并将所有单词收集到字符串列表中。
编辑:更新以将标点符号等作为不同的词处理:
try {
List<String> words = Files.lines(Paths.get("/path/to/sample.txt"))
.map(line -> line.split("\b"))
.flatMap(Arrays::stream)
.filter(w -> !w.trim().isEmpty())
.collect(Collectors.toList());
return words;
} catch (IOException e) {
// handle error
}