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

标签 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","

有人可以解释一下是什么原因导致了这种行为以及如何解决它吗?

更新: 我做了更多测试。看来如果我简单地将所有内容设置为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());

编辑

JavaDocSystem.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/

相关文章:

java - JTable插入查询

arrays - 在 Ruby 中对具有相似模式的字符串进行分组

c# - 如何在 C# 中使用 Split() 方法获取字符串的 n 部分?

swift 序列类型不工作

javascript - 如何使用 Javascript 和 PHP 同时继续两种类型的循环

c# - 如何正确配置 foreach 循环以避免索引超出范围错误?

java - Thymeleaf <select> 标签生成选项(数字)

java - Oauth2资源服务器中AuthenticationManagerBuilder的用途是什么

java - 从 java 将参数传递给批处理可以工作,但没有结果

c - 尝试使用指针从字符串中删除字符