在 java 中将 '\n' 替换为 ','

Replace '\n' by ',' in java

我想从用户那里获取输入 String 并将换行符 \n 替换为 ,

我试过了:

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

Output was s1,s2,s3,s4

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

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

s1

s2

s3

s4

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

有什么不对请指教

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

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

Update:

您可以使用 System.lineSeparator(); 而不是 \n 字符。

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

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

用户输入后的Java字符串看起来像

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

不喜欢你的测试字符串

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

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

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

A line terminator is a one- or two-character sequence that marks the end of a line of the input character sequence. The following are recognized as line terminators:

A newline (line feed) character ('\n'), A carriage-return character followed immediately by a newline character ("\r\n"), A standalone carriage-return character ('\r'), A next-line character ('\u0085'), A line-separator character ('\u2028'), or A paragraph-separator character ('\u2029).

你的文本区域的行终止符是 \r\n (CR/LF)。

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

使用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);
    }
}

outout : s1,s2,s3,s4

如果有人从文本中的 UI \\n 得到并想要删除一个 \ 以获得下一行符号 \n 那么可以使用这个:

        String text = "text\ntext\ntext\ntext";
    System.out.println(text.replaceAll("\\n", "\n"));

https://i.stack.imgur.com/nAv8d.png