我有这段代码:
Scanner input = new Scanner(System.in);
System.out.println("Enter file name: ");
File file = new File(input.nextLine());
if (file.length() == 0) {
System.out.println("The input file is empty.");
System.exit(1);
}
它读取用户输入的文件,然后检查它是否为空,非常简单。
我想要做的是将此文件中的每个单词放入一个字符串数组中,该数组将包含每个单词,标点符号和所有单词(撇号或短划线将包含在单词中)。我该怎么做?
我们假设文件内容可能如下所示:
it's
Stop
the
malformed yes-man
只是通过返回或空格分隔的随机单词。
非常感谢您的帮助:)
答案 0 :(得分:3)
检查一下(使用BufferedReader而非Scanner的例子)这会给你一个想法,然后你可以使用Scanner实现你自己:)
import java.io.*;
import java.util.*;
public class ReadFile
{
public static void main(String[] args) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter file name");
String fileName = br.readLine();
File file = new File(fileName);
if(file.length() == 0)
{
System.out.println("File is empty");
}
else
{
BufferedReader fr = new BufferedReader(new FileReader(file));
ArrayList<String> words = new ArrayList<String>();
String[] line;
String str;
while((str=fr.readLine()) != null)
{
line = str.split(" ");
for(String word : line)
words.add(word);
}
// Printing the content of words
for(String word : words)
System.out.println(word);
}
}
}
答案 1 :(得分:0)
String[] words = input.split("(?s)\\s+");