Java编写一个程序读取文本文档,提取其中英文单词,将大写字母改为小写,

最好用scanner提取单词,ArrayList<String>存储... 最好用scanner提取单词,ArrayList<String>存储 展开
 我来答
BecanXu
2016-11-22 · TA获得超过114个赞
知道小有建树答主
回答量:75
采纳率:50%
帮助的人:43.9万
展开全部
package file.system.demo.exception;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FileManpulation {
public  static List<String >  getLowerCaseWords(File file) {
Scanner scanner = null;
Pattern pattern = Pattern.compile("[a-zA-Z]+");
String text = "";
List<String > words = new ArrayList<>();
try {
scanner = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if(scanner!=null){
while(scanner.hasNextLine()){
text+=scanner.nextLine();
}
scanner.close();
}
//System.out.println(text);
Matcher matcher = pattern.matcher(text);
while (matcher.find()){
words.add(matcher.group().toLowerCase());
}
return words;
}

/**
 * 
 * @param words
 * @param file 输入文件
 * void
 */
public static void WriteToFile(List<String> words ,File file){
Collections.sort(words);//排序
FileWriter writer=null;
try {
writer = new FileWriter(file);
for (String word : words) {
writer.write(word+" ");
}

} catch (IOException e) {
e.printStackTrace();
}
finally {
if(writer!=null){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

static class InnerTest{
public static void main(String[] args) {
File file = new File("D:\\test.txt");
List<String> words=getLowerCaseWords(file);
WriteToFile(words,new File("D:\\in.txt"));
}
}

}
暮影1994
推荐于2017-12-16 · TA获得超过2338个赞
知道大有可为答主
回答量:1215
采纳率:60%
帮助的人:397万
展开全部

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);
        }
    }
}
更多追问追答
追问
对了大神 ,输出的数据要按字母表排序到新文档中,标题我少打了,能帮忙改下吗?万分感谢!
追答
//已经写好,但字符限制,所以上传到文件


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度校园
2016-11-22 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:87
采纳率:0%
帮助的人:63万
展开全部
  1. 首先你的判断字符串是否含有英文单词


    if (str.charAt(i) <= 'z' && str.charAt(i) >= 'a') {

    //如果判断是英文字符,则变成大写,

     str .toUpperCase();

    }

    

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宝石蓝般的幸福
2016-11-22 · 超过11用户采纳过TA的回答
知道答主
回答量:28
采纳率:100%
帮助的人:12.8万
展开全部
public static void main(String[] args) throws IOException {
//创建文件对象,参数是文件路径
File file=new File("C:/a.txt");
//建立管道
Reader is=new FileReader(file);
Scanner s=new Scanner(is);
//建立容器存储数据
ArrayList<String> list=new ArrayList<String>();
//通过管道取数据,如果有下一行数据
while(s.hasNext()){
//读取数据并存到容器中
list.add(s.nextLine().toLowerCase());
}
//输出容器中的数据
System.out.println(list);
}
追问
少了个排序,输出的内容按首字母顺序排序到新文档里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式