在 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
我想从用户那里获取输入 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