在java中用','替换'\ n'

Posted

技术标签:

【中文标题】在java中用\',\'替换\'\\ n\'【英文标题】:Replace '\n' by ',' in java在java中用','替换'\ n' 【发布时间】:2017-07-23 04:44:56 【问题描述】:

我想将用户输入为String 并将换行符\n 替换为,

我试过了:

String test ="s1\ns2\ns3\ns4"; System.out.println(test.replaceAll("\n",","));

输出为 s1,s2,s3,s4

但是当我通过从 UI 获取输入来尝试相同的代码时,它不起作用。

当我调试它时,字符串 test(我硬编码)被视为,

s1

s2

s3

s4

但 UI 中的字符串是“s1\ns2\ns3\ns4”。

请提出问题所在。

【问题讨论】:

试试System.out.println(test.replaceAll("\n",",").replaceAll("\r\n",",")); "从 UI 获取输入" - 显示从 UI 获取输入的代码。显然,无论读取什么都不会解释转义码并将文字 \n 留在字符串中。您可能需要自己解释转义序列 【参考方案1】:

\n 是换行符。如果你需要用n替换那个实际的反斜杠字符,那么你需要使用这个:

String test ="s1\ns2\ns3\ns4";
System.out.println(test.replaceAll("\\n",","));

更新:

您可以使用System.lineSeparator(); 代替\n 字符。

System.out.println(test.replaceAll(System.lineSeparator(),","));

【讨论】:

当我将字符串作为硬编码的字符串时,这工作正常。但是当我通过 textarea 从用户那里获取字符串时,它不起作用 当您通过 textArea 从用户处获取时,请检查该字符串的值。 不要使用 \n 而是使用 docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html 中定义的行分隔符 您可以使用System.lineSeparator(); 代替\n 字符。 我认为为了让System.lineSeparator() 工作,正则表达式字符串必须像正则表达式一样格式化。所以像replaceAll("[" + System.lineSeparator() + "]+")。这是我可以让它在我的设备上运行的唯一方法。【参考方案2】:

正如 anacron 已经指出的那样,'\n' 是一个特殊字符,与用户输入“\n”不同,因为用户输入被转换为“\\n”。

用户输入后的 Java 字符串如下所示

String test ="s1\\ns2\\ns3\\ns4";

不喜欢你的测试字符串

String test ="s1\ns2\ns3\ns4";

用户输入单个字符,键盘'\'转换为Java字符'\\'。

【讨论】:

在这种情况下如何替换 \\n? @sony System.out.println(test.replaceAll("\\n",",")); 谢谢你.. @Markus【参考方案3】:

java.util.regex.Pattern documentation 指定行终止符为:

行终止符是一个或两个字符的序列,用于标记 输入字符序列的行尾。以下是 识别为行终止符:

换行符(换行符)('\n'), 一个回车符,后跟一个换行符(“\r\n”), 一个独立的回车符('\r'), 下一行字符 ('\u0085'), 行分隔符 ('\u2028'),或 段落分隔符 ('\u2029)。

来自 textarea 的行终止符是 \r\n (CR/LF)。

正则表达式是[\r\n]+

【讨论】:

【参考方案4】:

使用Regex

public class Program

    public static void main(String[] args) 
        String str = "s1\ns2\ns3\ns4";
        str = str.replaceAll("(\r\n|\n)", ",");
        System.out.println(str);
    

输出:s1,s2,s3,s4

【讨论】:

以上是关于在java中用','替换'\ n'的主要内容,如果未能解决你的问题,请参考以下文章

在 awk 中用换行符替换“\n”

javascript 在 createTextNode 中用 <br> 替换 \n

如何在Java中用空字符串替换'

如何在java中用\替换字符串中的“(双引号)”

如何在 Java 中用空格替换双引号?

如何在 Emacs 中用换行符替换字符?