我有一些应该格式化输入字符串的基本代码。输入字符串包含一个单词列表,用换行符分隔。我的代码应该在每行的开头和结尾添加一些字符。 (开头为“ \”-,末尾为“ \”,”。)尽管单独打印时可以正确打印列表中的每个元素,但是var'out'并不包含所有元素,而是包含“ \”,\“”。
String[] split = everything.split("\n");
String out = "\"";
for (String split1 : split) {
System.out.println(split1);
out = out + "-" + split1.toLowerCase() + "\",\"";
}
System.out.println(out);
例如,对于输入字符串:
Indonesian\nid\nYiddish\nyi
印刷品:
Indonesian
id
Yiddish
yi
","
什么时候应该打印:
Indonesian
id
Yiddish
yi
"-indonesian","-id","-yiddish","-yi","
有人可以解释是什么导致了这种现象,以及如何解决它?
更新:
我做了更多测试。似乎如果我只是将
everything
设置为Indonesian\nid\nYiddish\nyi
,那么所需的输出就会出现。但是,everything
是从大文本文件中读取的。我将文件的内容粘贴到了这里:http://pastebin.com/Tjf9dzcb我这样读取文件:
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\xxxx\\Desktop\\hi.txt"));
String everything = null;
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
everything = sb.toString();
} finally {
br.close();
}
最佳答案
将sb.append();
和everything.split()
使用相同的参数。
sb.append("\n");
String[] split = everything.split("\n");
要么
sb.append(System.lineSeparator());
String[] split = everything.split(System.lineSeparator());
编辑
JavaDoc中
System.lineSeparator()
的定义返回系统相关的行分隔符字符串。它总是返回相同的值-系统属性line.separator的初始值。
在UNIX系统上,它返回“ \ n”;在Microsoft Windows系统上,它返回“ \ r \ n”。
因此,如果您的系统是Windows,则
System.lineSeparator()
等效于"\r\n"
。在UNIX中,您以前的代码应该可以正常工作。