如何在Java中仅删除字符串的尾随空格并保留前导空格?自 JDK 11 起早期的 JDK 版本

2022-08-31 20:47:29

trim() 函数同时删除了尾随和前导空格,但是,如果我只想删除字符串的尾随空间,我该怎么做?


答案 1

自 JDK 11 起

如果您使用的是 JDK 11 或更高版本,则可能应该使用 stripTrailing()。


早期的 JDK 版本

使用正则表达式 ,您可以将所有尾随空格字符(包括空格和制表符)替换为空字符串 ()。\s++$""

final String text = "  foo   ";
System.out.println(text.replaceFirst("\\s++$", ""));

输出

  foo

在线演示。

以下是正则表达式的细分:

  • \s– 任何空格字符,
  • ++– 匹配一个或多个先前的令牌(所有格);即,匹配一个或多个空格字符。该模式以其所有格形式使用,当模式不匹配时,它需要更少的时间来检测情况。+++
  • $– 字符串的末尾。

因此,正则表达式将尽可能多地匹配空格,紧随其后的是字符串的末尾:换句话说,尾随空格。

学习正则表达式的投资将变得更加有价值,如果你以后需要扩展你的要求。

引用


答案 2

另一种选择是使用Apache Commons,特别是StringUtils.stripEnd。StringUtils

String stripped = StringUtils.stripEnd("   my lousy string    "," ");