我知道这是这些问题的混合体:trim whitespace from a string?和 Regex or way to replace multiple space with single space .
我知道可以将这两种解决方案结合起来:
String mystring = " brains T1* C+ ";
mystring = mystring.trim().replaceAll("[ ]+", " ");
输出:大脑 T1* C+
但是我的问题:
是否可以将 trim 部分制作为单个正则表达式?
即mystring.replaceAll("#regex");
最佳答案
是的,您可以:
mystring = mystring.replaceAll("^\\s+|(?<=\\s)\\s+|\\s+$", "");
该表达式背后的想法是分别匹配初始空格和尾随空格(通过使用 ^\\s+
和 \\s+$
表达式),并通过在前瞻中使用它来“屏蔽”一个空格以防止删除。这是最有趣的一 block :(?<=\\s)\\s+
- 它说“匹配一个或多个空格,当它们前面恰好有一个空格时”。 (?<=\\s)
与我们想要保留的空间相匹配; \\s+
匹配“不需要的”。
关于用于调整空格的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24313835/