如何将String的内容拆分为List

时间:2017-07-05 11:22:18

标签: java

我正在尝试使用java迭代一个txt文件,我有以下代码,首先我读取txt文件没有任何问题,然后我添加我感兴趣的列名为记录列表,这个数组正确迭代一会儿。

问题是我收到了这样的内容

  TCP    0.0.0.0:135            PCB:0             LISTENING

我想分割这些内容并避免使用分割和修剪之前尝试的空格,但我没有正确地执行此操作。

有人可以帮助我吗?

 String FILENAME = "src/example.txt";
        String line = null;
    Integer lines=0;
    Integer totalLines=countLines(FILENAME);
    List<String> records = new ArrayList<String>();

    try{
        InputStream fis=new FileInputStream(FILENAME);
        BufferedReader br=new BufferedReader(new InputStreamReader(fis));
            while ((line = br.readLine()) != null)
            {
                lines++;
                if (lines >= 5 && lines <= 180) {
                    records.add(line);
                }
            }
            br.close();

    }


    catch(Exception e){
        System.err.println("Error: Target File Cannot Be Read");
    }

    Iterator<String> it = records.iterator();

    while (it.hasNext()) {

        System.out.println(it.next());

    }

问候!

2 个答案:

答案 0 :(得分:4)

方法1

首先用一个空格替换多个空格 -

line = line.replaceAll("\\s+"," ");

比,用空格分开,

String[] lineTokens = line.split(" ");

方法2

正如大卫所建议的那样,你也可以这样做 -

String[] lineTokens = line.split("\\s+");

希望这会对你有帮助;)

答案 1 :(得分:3)

将您的String分解为由空格分隔的标记

StringTokenizer st = new StringTokenizer(line);

然后提取出各个部分

 String substringA = st.nextElement(); // "TCP"
 String substringB = st.nextElement(); // "0.0.0.0:135"
 String substringC = st.nextElement(); // "PCB:0"
 String substringD = st.nextElement(); // "LISTENING"

由于StringTokenizer被很多人讨厌,您可以使用方法将其拆分为由多个空格分隔的String数组(使用regular expression "\\s+")在名为split()String对象上,如下所示: -

String[] tokens = line.split("\\s+");

并通过

访问它们
String substringA = tokens[0]; // "TCP"
String substringB = tokens[1]; // "0.0.0.0:135"
String substringC = tokens[2]; // "PCB:0"
String substringD = tokens[3]; // "LISTENING"