繁体   English   中英

如何删除回车符和空格并将字符串正确存储在数组中?

[英]How to remove carriage return & space and store strings in the array properly?

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

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

然后我阅读它们并将其拆分,删除回车符,替换为昏迷并将其存储在数组中。

打印出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];
                }

为什么不尝试以下方法呢? 更矮更甜?

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]", "");

无需用逗号替换回车符。

无需用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);
        }

    }
}

输出:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM