我如何替换所有的换行符从一个字符串在Java在这样的方式,将工作在Windows和Linux(即没有具体的操作系统的回车/换行/新行等问题)?
我尝试过(注意readFileAsString是一个将文本文件读入String的函数):
String text = readFileAsString("textfile.txt");
text.replace("\n", "");
但这似乎并不奏效。
如何做到这一点呢?
我如何替换所有的换行符从一个字符串在Java在这样的方式,将工作在Windows和Linux(即没有具体的操作系统的回车/换行/新行等问题)?
我尝试过(注意readFileAsString是一个将文本文件读入String的函数):
String text = readFileAsString("textfile.txt");
text.replace("\n", "");
但这似乎并不奏效。
如何做到这一点呢?
当前回答
org . apache commons。朗StringUtils # chopNewline。
其他回答
String text = readFileAsString("textfile.txt").replaceAll("\n", "");
尽管在oracle网站中trim()的定义是 返回字符串的副本,省略前导和尾随空格。
文档没有说明新的行字符(前导和后尾)也将被删除。
简而言之 字符串文本= readFileAsString("textfile.txt").trim();对你也有用。 (用java6核对)
如果你只想删除当前操作系统上有效的行结束符,你可以这样做:
text = text.replaceAll(System.getProperty("line.separator"), "");
如果你想确保你删除了任何行分隔符,你可以这样做:
text = text.replaceAll("\\r|\\n", "");
或者,稍微啰嗦一点,但不那么regexy:
text = text.replaceAll("\\r", "").replaceAll("\\n", "");
您可以使用apache公共IOUtils遍历该行并将每行附加到StringBuilder。不要忘记关闭InputStream
StringBuilder sb = new StringBuilder();
FileInputStream fin=new FileInputStream("textfile.txt");
LineIterator lt=IOUtils.lineIterator(fin, "utf-8");
while(lt.hasNext())
{
sb.append(lt.nextLine());
}
String text = sb.toString();
IOUtils.closeQuitely(fin);
换行符在windows/linux/mac下是不一样的。你应该使用系统。使用属性line.separator获取properties。
您可能希望使用BufferedReader读取文件。这个类可以将输入分解成单独的行,您可以随意组装这些行。BufferedReader的操作方式自动识别Linux、Windows和MacOS世界的行结束约定,而不考虑当前的平台。
因此:
BufferedReader br = new BufferedReader(
new InputStreamReader("textfile.txt"));
StringBuilder sb = new StringBuilder();
for (;;) {
String line = br.readLine();
if (line == null)
break;
sb.append(line);
sb.append(' '); // SEE BELOW
}
String text = sb.toString();
请注意,readLine()在返回的字符串中不包括行结束符。上面的代码添加了一个空格,以避免将一行的最后一个单词和下一行的第一个单词粘合在一起。