我有一些基本代码可以格式化输入字符串。输入字符串有一个单词列表,用换行符分隔。我的代码应该添加到每行的开头和结尾添加几个字符。 (" \" - "在开头和" \","最后。)但是,尽管列表中的每个元素都正确打印时单独打印,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();
}
答案 0 :(得分:3)
同时使用sb.append();
和everything.split()
参数。
sb.append("\n");
String[] split = everything.split("\n");
或
sb.append(System.lineSeparator());
String[] split = everything.split(System.lineSeparator());
修改强>
中System.lineSeparator()
的定义
返回依赖于系统的行分隔符字符串。它始终返回相同的值 - 系统属性line.separator的初始值。 在UNIX系统上,它返回" \ n&#34 ;;在Microsoft Windows系统上,它返回" \ r \ n"。
因此,如果您的系统是Windows,那么System.lineSeparator()
相当于"\r\n"
。在UNIX中,您之前的代码应该可以正常运行。