【问题标题】:Read in Comma separated list of files, output without commas without iteration读入逗号分隔的文件列表,输出不带逗号,不迭代
【发布时间】:2012-04-29 02:46:40
【问题描述】:

我正在尝试从以下 txt 文件中删除逗号:

abcd,efgh,ijkl
mnop,qrst,uvwx
yzzz,0123,4567
8910

我的代码是这样的:

public static ArrayList readFileByLine(ArrayList list, String fileName){
try{
    File file = new File(fileName);
    Scanner reader = new Scanner(file);
    reader.useDelimiter(",");
    while(reader.hasNext()){
      String s = reader.next();
      s= s.trim();
      s= s.replaceAll("," , "");
      list.add(s);
    }
    reader.close();
}
catch(FileNotFoundException e){ System.err.println("Error: " + e.getMessage());}

return list;

}

除非绝对必要,否则我尽量不使用正则表达式,如果您建议我使用正则表达式,请解释它的作用!感谢您的帮助!

【问题讨论】:

  • 运行该代码时会发生什么?我猜有些东西不能正常工作?
  • Replaceall 需要一个正则表达式,不幸的是正则表达式和我的关系很糟糕......
  • 我也尝试过使用替换,但它不会只接收一个逗号,所以我也很不走运。使用 substr 打破了迭代规则......所以我认为我被困在使用正则表达式。
  • 我刚刚测试了你的代码,它运行良好。又是什么问题?

标签: java regex replace


【解决方案1】:

您的代码运行良好。我认为您遇到了其他问题,我不确定是什么。这是我使用的代码(您的代码进行了一些修改):

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        List<String> list = readFileByLine(new ArrayList<String>(), "/Users/hassan/Library/Containers/com.apple.TextEdit/Data/Desktop/file.text");
        for(String s : list){
            System.out.println(s);
        }
    }

    public static List<String> readFileByLine(ArrayList<String> list, String fileName){
        try{
            File file = new File(fileName);
            Scanner reader = new Scanner(file);
            reader.useDelimiter(",");
            while(reader.hasNext()){
              String s = reader.next();
              s= s.trim();
              s= s.replaceAll("," , "");
              list.add(s);
            }
            reader.close();
        }
        catch(FileNotFoundException e){ System.err.println("Error: " + e.getMessage());}

        return list;
    }
}

此代码有效(试试吧!)。我应该提到我使用这段代码的方式,将 ArrayList 作为第一个参数传递是没有用的,因为你可以在 readFileByLine 函数的开头创建一个新的 ArrayList。我不确定您是否这样做,因为您想稍后将字符串重新添加到数组中,所以我不理会它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多