我有一些应该格式化输入字符串的基本代码。输入字符串包含一个单词列表,用换行符分隔。我的代码应该在每行的开头和结尾添加一些字符。 (开头为“ \”-,末尾为“ \”,”。)尽管单独打印时可以正确打印列表中的每个元素,但是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());


编辑

JavaDocSystem.lineSeparator()的定义


  返回系统相关的行分隔符字符串。它总是返回相同的值-系统属性line.separator的初始值。
  在UNIX系统上,它返回“ \ n”;在Microsoft Windows系统上,它返回“ \ r \ n”。


因此,如果您的系统是Windows,则System.lineSeparator()等效于"\r\n"。在UNIX中,您以前的代码应该可以正常工作。

10-07 13:04
查看更多