在forEach()循环中组合字符串失败

时间:2015-09-19 20:21:50

标签: java string foreach

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

1 个答案:

答案 0 :(得分:3)

同时使用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&#34 ;;在Microsoft Windows系统上,它返回" \ r \ n"。

因此,如果您的系统是Windows,那么System.lineSeparator()相当于"\r\n"。在UNIX中,您之前的代码应该可以正常运行。