【问题标题】:Is there any function to use with list to jump next line?是否有任何函数可以与 list 一起使用来跳转下一行?
【发布时间】:2019-09-10 11:46:30
【问题描述】:

尝试读取文本文件并将内容添加到数组列表,而不是写入新的文本文件,但它与原始文件的格式不同。 我希望它与原始文件的格式相同。

public static void main(String args[]) throws IOException
{

    Scanner sc1 = new Scanner(new File("C:\\Users\\amank\\eclipse-workspace\\DataStructures\\src\\sample1-pp.txt")); 

    ArrayList<String> list = new ArrayList<String>();
    //testing
    FileWriter writer = new FileWriter ("C:\\Users\\amank\\eclipse-workspace\\DataStructures\\src\\output.txt");; 

    if(!sc1.hasNext())
    {
        System.out.println("File is empty");
    }

    try {
        while (sc1.hasNext())
        {

            list.add(sc1.nextLine().trim().toLowerCase().replaceAll("\\p{P}", ""));


        }
        sc1.close();    

        //for testing

        for(String str: list)
        {
            writer.write(str);
        }
        writer.close();

预期

傲慢与偏见

简·奥斯汀

第一章

一个人人都知道的道理,有钱的单身汉,一定要娶个老婆。

======

实际

傲慢与偏见by jane austenchapter 1这是一个普遍公认的真理,一个拥有好运气的单身男人必须想要一个妻子

【问题讨论】:

  • 所以您正在转换为小写字母并剥离字符,并且想知道为什么要这样写?或者您想知道为什么您跳过了 nextLine 文档中说行分隔符不包含在字符串中的部分?还是什么?
  • 你可能想使用:writer.write(str + "\n");
  • 您的问题显然与 toLowerCase()trim() 的存在有关,正如函数名称所暗示的那样,它们会将字符转换为小写并修剪掉多余的空格。
  • 我正在阅读我在“预期”中提到的文件,我想删除所有标点符号、整数并将所有大写字母转换为小写字母,并以与原始文件。

标签: java arraylist filewriter file-read


【解决方案1】:

写入文件时需要添加行分隔符

public static void main(String args[]) throws IOException{

Scanner sc1 = new Scanner(new File("C:\\Users\\amank\\eclipse-workspace\\DataStructures\\src\\sample1-pp.txt")); 

ArrayList<String> list = new ArrayList<String>();
//testing
FileWriter writer = new FileWriter ("C:\\Users\\amank\\eclipse-workspace\\DataStructures\\src\\output.txt");; 

if(!sc1.hasNext())
{
    System.out.println("File is empty");
}

try {
    while (sc1.hasNext())
    {

        list.add(sc1.nextLine().trim().toLowerCase().replaceAll("\\p{P}", ""));


    }
    sc1.close();    

    //for testing
    String newLine = System.getProperty("line.separator");

    for(String str: list)
    {
        writer.write(str+newLine);
    }
    writer.close();

【讨论】:

    【解决方案2】:

    为什么你从文件中读取行,将它们转换为小写,修剪它们然后将它们添加到 ArrayList...? 只需按原样向 ArrayList 添加行

       public static void main(String args[]) {
        try {
            Scanner sc1 = new Scanner(new File("C:\\Users\\amank\\eclipse-workspace\\DataStructures\\src\\sample1-pp.txt"));
    
            ArrayList<String> list = new ArrayList<String>();
            //testing
            FileWriter writer = new FileWriter("C:\\Users\\amank\\eclipse-workspace\\DataStructures\\src\\output.txt");;
    
            if (!sc1.hasNext()) {
                System.out.println("File is empty");
            }
    
            while (sc1.hasNext()) {
    
                list.add(sc1.nextLine());
    
            }
            sc1.close();
    
            //for testing
            for (String str : list) {
                writer.write(str);
            }
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-27
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 2012-03-02
      • 2013-01-15
      相关资源
      最近更新 更多