import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 2016/11/22 09:59
*
* @author 3306 TODO 怀疑人生
*/
public class MyFileReader {
public static void main(String[] args) {
String path = "d://test.txt";//文件路径
List<String> englishList = getEnglishCharacter(path);
display(englishList);
}
/**
* 获取文件内英文
字符串 *
* @param path 文件路径
* @return list of String
*/
private static List<String> getEnglishCharacter(String path) {
List<String> charList = new ArrayList<>();
try {
File file = new File(path);
if (!file.exists()) {//文件不存在
throw new NullPointerException();
}
FileReader fileReader = new FileReader(file);
Scanner scanner = new Scanner(fileReader);
while (scanner.hasNext()) {
String str = scanner.nextLine();
String[] chars = str.split("\\s+");//根据空格切割,获取每一个字符
for (String eachChar : chars) {
if (isEnglishCharacter(eachChar)) {//英文字符串
charList.add(eachChar.toLowerCase());//改变成小写字母
}
}
}
scanner.close();//关闭流,节省资源
fileReader.close();
} catch (Exception e) {
e.printStackTrace();
}
return charList;
}
/**
* 判断字符串是不是英文字符串
*
* @param str 字符串
* @return 是则返回true, 否则返回false
*/
private static boolean isEnglishCharacter(String str) {
if (null == str || str.trim().equals("")) {
return false;
}
String regex = "^[a-z]+$";
return str.matches(regex);
}
/**
* 显示内容
*
* @param list 字符串列表
*/
private static void display(List<String> list) {
for (String each : list) {
System.out.println(each);
}
}
}
追问对了大神 ,输出的数据要按字母表排序到新文档中,标题我少打了,能帮忙改下吗?万分感谢!
追答//已经写好,但字符限制,所以上传到文件
追问感谢!写的很好了,不过排序要求是每个单词首字母升序,我运行下好像不是这么排的。
本回答被提问者采纳