如何在Java中替换字符串中的所有换行符,从而在Windows和Linux上工作(即没有特定于操作系统的回车/换行/换行等问题)?

我试过(注意readFileAsString是将文本文件读入字符串的函数):

String text = readFileAsString("textfile.txt");
text.replace("\n", "");

但这似乎不起作用.

怎样才能做到这一点呢?

推荐答案

您需要将text.replace()的结果设置为text:

String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");

这是必要的,因为字符串是不可变的--调用replace不会更改原始字符串,它会返回一个已更改的新字符串.如果不将结果赋给text,那么新字符串将丢失并被垃圾回收.

至于获取任何环境的换行符字符串,可以通过调用System.getProperty("line.separator")来实现.

Java相关问答推荐

使用hibiter中特定字段的where条款自定义映射

当切换javaFX场景时,stage的大小正在Minimize

为什么Java的代码工作(if condition内部的实例)

使用意向过滤器从另一个应用程序启动服务

为什么不应用类型推断?

返回响应时,CamelCase命名约定不起作用

SpringBoot Kafka自动配置-适用于SASL_PLAYTEXT的SSLBundle 包,带SCRAM-SHA-512

迁移到Java 17后,日期显示不准确

Instancio未在日志(log)中显示测试失败消息

在macOS上读取文件会导致FileNotFound,即使文件存在(并且具有权限)

在settings.gradle.kts和Build.gradle.kts中使用公共变量

从LineChart<;字符串、字符串和gt;中删除数据时出现特殊的ClassCastException;

如何使用MapStrCut转换双向链接

IntelliJ IDEA中的JavaFX应用程序无法在资源中找到CSS文件

基于Java中mm/dd/yy格式的最近日期对数组列表进行排序

在Java中比较同一多维数组的两个不同的字符串元素

验证没有';t work on Hibernate Entity';s字段

java.lang.NoSuchMethodError:';org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream$Builder org.apache.poi-poi-ooxml-5.2.4

Java方法参数:括号中的类型声明?

如何从指定某些字段的父对象创建子对象