如何移除字符串中的硬回车?现有replaceAll代码失效求解决
移除字符串中硬回车的最佳方法
问题场景
输入字符串:
String in= "strengthened columns with GRPES ";
预期输出:strengthened columns with GRPES
你尝试的代码未生效:
in = in.replaceAll("\\r\\n",""; System.out.println(in);
问题原因
你的代码存在两个问题:
- 语法错误:
replaceAll的参数未闭合,缺少结尾的双引号和右括号,正确写法应为in.replaceAll("\\r\\n", "") - 匹配范围有限:仅针对Windows系统的
\r\n换行符,但Linux/macOS使用\n、旧版Mac使用\r,只匹配\r\n会漏掉其他系统的换行场景。
可行解决方法
1. 匹配所有类型换行符(通用首选)
用正则表达式[\r\n]+匹配任意数量的回车或换行,替换为空格(或空字符串,按需选择):
in = in.replaceAll("[\r\n]+", " ");
如果需要去除首尾可能多余的空格,可追加trim():
in = in.replaceAll("[\r\n]+", " ").trim();
2. 适配当前系统换行符
若仅需处理当前运行系统的换行符,可通过System.lineSeparator()获取系统默认换行标识后替换:
in = in.replace(System.lineSeparator(), " ");
该方法仅适用于单系统场景,跨平台处理建议用方法1。
3. 逐个替换(无正则,更直观)
不想使用正则的话,可逐个替换不同类型的换行符:
in = in.replace("\r\n", " ").replace("\n", " ").replace("\r", " ");
写法简单直接,适合无需复杂正则的场景。
修正后的完整代码示例
public class Main { public static void main(String[] args) { String in = "strengthened columns \nwith GRPES\n"; // 通用写法,处理所有换行并去除首尾空格 in = in.replaceAll("[\r\n]+", " ").trim(); System.out.println(in); // 输出:strengthened columns with GRPES } }
内容的提问来源于stack exchange,提问作者Mahesh M
相关产品推荐
相关产品推荐

