如何删除回车&空间并正确存储数组中的字符串?

时间:2017-01-28 02:10:22

标签: java arrays carriage-return

我有一个包含4行数据的文本文件。

AAA,ZZZ,555,10
BBB,KKK,908977,5
CCCCC,WIKY PODAR,130000,15
DDDDD,XXXXX555,130110,30

然后我读了它们并将它们分开,移除了carrige返回,替换了antoher昏迷并将它们存储到一个数组中。

打印出arry,它看起来很好:

[AAA, ZZZ, 555, 10, BBB, KKK, 908977, 5, CCCCC, WIKY PODAR, 130000, 15, DDDDD, XXXXX555, 130110, 30]

但是,我单独打印出它们,10和BBB成为单个数组元素。如何将它们分成两个不同的数组元素?

谢谢。

输出:

AAA
ZZZ
555
10, BBB
KKK
908977
5, CCCCC
WIKY PODAR
130000
15, DDDDD
XXXXX555
130110
30
while (inputStream.read(buffer) != -1) {
                String testString2 = new String(buffer);
                String delim2 = ",";
                String[] token2 = testString2.split(delim2);
                String[] myStringArray = new String[token2.length];
                for (int i = 0; i < token2.length; i++) {
                    token2[i]=token2[i].replaceAll("[\n]", "");
                    token2[i]=token2[i].replaceAll("[\r]", ", ");
                    myStringArray[i] = token2[i];
                }

2 个答案:

答案 0 :(得分:2)

为什么不尝试以下方式呢?更短更甜?

List<String> lines = Files.readLines(file, Charsets.UTF_8);
for(String line : lines) {
    String[] words = line.split(",");
    System.arrayCopy(words, 0, myStringArray, myStringArray.length, words.length);
}

但是如果你真的想以你的方式去做,你需要

替换

token2[i]=token2[i].replaceAll("[\r]", ", ");

token2[i]=token2[i].replaceAll("[\r]", "");

无需用逗号替换回车。

答案 1 :(得分:1)

无需用null替换回车。回车在数据中充当分隔符,就像逗号一样。

以下是读取每一行,分割逗号并聚合标记的代码。

replaceAll()

输出:

import java.io.*;
import java.util.*;

public class ParseTextFile {

    public static String[] read(String fileName) throws IOException {

        // Will hold all tokens from the file.
        List<String> list = new ArrayList<String>();

        // Open the file
        FileInputStream fstream = new FileInputStream(fileName);
        BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

        String buffer = null;

        // Read the file line-by-line.
        while ((buffer = br.readLine()) != null)   {

            // Split this line on commas and add each token to the list.
            String[] tokens = buffer.split(",");

            for (String token : tokens) {
                list.add(token);
            }
        }

        br.close();

        String[] array = new String[list.size()];
        return list.toArray(array);
    }

    public static void main(String argv[]) throws Exception {

        String[] result = read("text.txt");
        for (String string : result) {
            System.out.printf("%s\n", string);
        }

    }
}