我有一些应该格式化输入字符串的基本代码。输入字符串有一个单词列表,以换行符分隔。我的代码应该添加一些字符到每行的开头和结尾。 (开头为“\”-”,结尾为“\”,”。)但是,虽然单独打印时列表中的每个元素都正确打印,但 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","
有人可以解释一下是什么原因导致了这种行为以及如何解决它吗?
更新:
我做了更多测试。看来如果我简单地将所有内容
设置为Indonesian\nid\nYiddish\nyi
,那么就会出现所需的输出。然而,所有内容
都是从一个大文本文件中读取的。我将文件的内容粘贴在这里: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()
的定义
Returns the system-dependent line separator string. It always returns the same value - the initial value of the system property line.separator. On UNIX systems, it returns "\n"; on Microsoft Windows systems it returns "\r\n".
因此,如果您的系统是 Windows,则 System.lineSeparator()
相当于 "\r\n"
。在 UNIX 中,您之前的代码应该可以正常工作。
关于java - 在 forEach() 循环中组合字符串失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32672825/