java - 强制换行符再次正确打印

标签 java regex newline

我必须将一堆字符串导出到在 Excel 中打开的 CSV 中。字符串包含“\n”和“\t”,我需要将其包含在 CSV 中,因此在导出数据之前我执行了以下操作:

public static String unEscapString(String s)
{
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < s.length(); i++)
    {
        switch (s.charAt(i))
        {
            case '\n': sb.append("\\n"); break;
            case '\t': sb.append("\\t"); break;
            default: sb.append(s.charAt(i));
        }
    }
    return sb.toString();
}

问题是我现在正在将数据重新导入到 Java 中,但我不知道如何让换行符和制表符再次正确打印。我试过:

s.replaceAll("\\n", "\n");

但它仍然忽略换行符。帮忙?

编辑:我正在尝试做的事情的示例:

假设 CSV 中的一个字符串是“foo\n bar”。当我使用 Java 导入它时,我尝试将相同的字符串打印到控制台,但换行符行为正确

最佳答案

replaceAll的第一个参数是一个正则表达式。你有2个选择。您可以使用普通的旧 replace像这样:

s.replace("\\n", "\n");

或者您可以转义正则表达式解析器的斜杠(即去掉单个斜杠):

s.replaceAll("\\\\n", "\n");

s.replaceAll(Pattern.quote("\\n"), "\n");

我会选择replace,因为您没有使用正则表达式。

关于java - 强制换行符再次正确打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21641003/

相关文章:

java - 匹配器在字符串末尾创建额外的组

regex - 我遵循 Posix ERE 格式,但在 bash 中总是正确的

python - 使用正则表达式和字典将列添加到数据框

c - 如何在 Linux 中删除 ^M ^J 字符

ios - 如何用换行符拆分字符串

javascript - 正则表达式从字符串中获取所有 JavaScript 变量名称和值

java - 在 Java 中可以手动启动来处理常规作业

java - 为什么 String::isEmpty 在无法从静态上下文中引用非静态方法时起作用?

java - 如何将监听器添加到 osx 上的 java 停靠图标

python - 正则表达式:如何匹配字符串末尾的键值对序列