我知道这是这些问题的混合:从字符串中修剪空格?和正则表达式或用单个空格替换多个空间的方法.
我知道可以结合两种解决方案:
String mystring = " brains T1* C+ ";
mystring = mystring.trim().replaceAll("[ ]+", " ");
Run Code Online (Sandbox Code Playgroud)
输出: brains T1* C+
但我的问题是:
是否可以制作一个正则表达式的装饰部分?
即 mystring.replaceAll("#regex");
是的你可以:
mystring = mystring.replaceAll("^\\s+|(?<=\\s)\\s+|\\s+$", "");
Run Code Online (Sandbox Code Playgroud)
这个表达式背后的想法是分别匹配初始空格和尾随空格(通过使用^\\s+和\\s+$表达式),并通过在前瞻中使用它来"屏蔽"一个空格.这是最有趣的部分:(?<=\\s)\\s+- 它表示"当它们前面只有一个空格时匹配一个或多个空格".(?<=\\s)匹配我们想要保留的空间; \\s+匹配"不需要的".