我必须将一堆字符串导出到在 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/