public static void main(String[] args) {
String str = " TWD day count Spot 6-Sep / 2-Sep 2016 1W7d 13-Sep / 9-Sep 2016 1M30d 6-Oct / 4-Oct 2016 2M62d 7-Nov / 3-Nov 2016 3M91d 6-Dec / 2-Dec 2016 6M181d 6-Mar / 2-Mar 2017 9M273d 6-Jun / 2-Jun 2017 12M365d 6-Sep / 4-Sep 2017 18M546d 6-Mar / 2-Mar 2018 24M730d 6-Sep / 4-Sep 2018";
str = str.toString().replaceAll(" +", "");
System.out.println("str="+str.toString().trim().replaceAll(" ", ""));
}
我尝试了很多字符串函数来删除空格,例如trim()
,replaceAll(" ","")
,replaceAll("\\s","")
,replaceAll(" +","")
,replaceAll("\\s\\u00a0","")
,stringUtils.normalize()
等功能等很多我试过但没有按预期工作。
我期待输出如下:
“String str =”TWD day count 2016年9月6日至9月2日1W7d 13-Sep / 2016年9月9日1M30d 2016年10月6日至10月4日2016年7月7日至2016年11月3日 3M91d 2016年12月6日至12月6日6M181d 2017年3月6日/ 3月2日9M273d“
只有一个空格而不是长白色复制空格。
请帮忙。
找到答案如下:
System.out.println("str="+str.replaceAll("(?U)\\s+", " "));
答案 0 :(得分:6)
如果文本中包含非标准空格,例如Unicode类别中的字符:
\u00A0
(没有空位),\u2003
(EM SPACE),... \u2029
(第(SEAGRAPH SEPARATOR))\u2028
(LINE SEPARATOR)使用它:
str = str.replaceAll("[\\s\\p{Z}]+", " ").trim();
其中\s
匹配空白字符([ \t\n\x0B\f\r]
),而\p{Z}
是上面列出的\p{Zs}\p{Zp}\p{Zl}
的简写。
它基本上将所有空格和分隔符字符替换为空格,将连续空格折叠为单个空格,并删除前导和尾随空格。
答案 1 :(得分:0)
public static void main(String []args){
String str = " TWD day count Spot 6-Sep / 2-Sep 2016 1W7d 13-Sep / 9-Sep 2016 1M30d 6-Oct / 4-Oct 2016 2M62d 7-Nov / 3-Nov 2016 3M91d 6-Dec / 2-Dec 2016 6M181d 6-Mar / 2-Mar 2017 9M273d 6-Jun / 2-Jun 2017 12M365d 6-Sep / 4-Sep 2017 18M546d 6-Mar / 2-Mar 2018 24M730d 6-Sep / 4-Sep 2018";
str = str.replaceAll("\\s+", " ");
System.out.println(str);
}
输出:
TWD day count Spot 6-Sep / 2-Sep 2016 1W7d 13-Sep / 9-Sep 2016 1M30d 6-Oct / 4-Oct 2016 2M62d 7-Nov / 3-Nov 2016 3M91d 6-Dec / 2-Dec 2016 6M181d 6-Mar / 2-Mar 2017 9M273d 6-Jun / 2-Jun 2017 12M365d 6-Sep / 4-Sep 2017 18M546d 6-Mar / 2-Mar 2018 24M730d 6-Sep / 4-Sep 2018