我有一个包含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);
答案 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());