如何处理在结尾和行开头连接字符串的回车符?

时间:2017-01-28 08:35:21

标签: java arrays carriage-return

我有一个包含2行文字的文本文件

CCCCC,WIKY PODAR,130000,15
DDDDD,XXXXX555,130110,30

程序逐字逐字地读取每一行,并将它们存储到一个数组中。

检查myStringArray.length返回:7

但是我希望输出为:8

问题是最后两行和行的开头是连接起来的。如何将它们分开并正确存储到数组中?

 String fileName = "mac/text.txt";
    byte[] buffer = new byte[1000];
    FileInputStream inputStream = new FileInputStream(fileName);
     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++) {
            myStringArray[i] = token2[i];
             token2[i]=token2[i].replaceAll("\\s+", ", ");
                            }
        System.out.println(myStringArray.length);

3 个答案:

答案 0 :(得分:1)

我认为你应该用两个分隔符分割你的String:

CreateCompanyViewModel => CompanyDTO

这应该//delimiters with two separator , and space String delim2 = ",|\\ "; String testString2 = "CCCCC,WIKY PODAR,130000,15\n" + "DDDDD,XXXXX555,130110,30"; String[] token2 = testString2.split(delim2); System.out.println(token2.length); 而不是8,因为我们使用了两个分隔符7,

修改

好的,这是另一种从文件中学习并拆分的方法:

space

希望这可以帮到你。

答案 1 :(得分:1)

第一行将以行分隔符结束(每个操作系统不同):有关详细信息,请参阅this answer

因此,如果它适用于Windows,Linux和Mac文件,您可能需要先用逗号替换行分隔符,然后将其余部分分开:

testString = testString.replaceAll("\r\n", ",").replaceAll("\r", ",").replaceAll("\n", ",");
// now your string looks like this: CCCCC,WIKY PODAR,130000,15,DDDDD,XXXXX555,130110,30
String[] token2 = testString.split(",");

答案 2 :(得分:1)

为什么不加载String中的所有内容并在String中用","字符替换行分隔符String?然后,您可以使用单个分隔符","轻松拆分字符串。

你可以尝试一下:

String content = new String(Files.readAllBytes(Paths.get("mac/text.txt")));
content = content.replaceAll(System.lineSeparator(), ",");
String[] token2 = content.split(",");

或者,如果您想避免调用replaceAll()并直接执行拆分,您可以在正则表达式中指明,字符OR行分隔符字符串:

String content = new String(Files.readAllBytes(Paths.get("mac/text.txt")));
String[] token2 = content.split(",|"+System.lineSeparator());