如何在Java中修剪无中断空间?
我已经输入了一个输入文件,我需要处理并丢弃所有空格,包括不间断空格(您可以通过按压然后从键盘的数字板键入来在记事本中生成它)或任何其他形式的空格。我尝试过String.trim(),
但它没有修剪。U+00A0
 
Alt0160U+00A0
我是否需要显式检查,然后,或者是否有一种简单的方法来修剪Java中的各种空格?U+00A0
trim()
我已经输入了一个输入文件,我需要处理并丢弃所有空格,包括不间断空格(您可以通过按压然后从键盘的数字板键入来在记事本中生成它)或任何其他形式的空格。我尝试过String.trim(),
但它没有修剪。U+00A0
 
Alt0160U+00A0
我是否需要显式检查,然后,或者是否有一种简单的方法来修剪Java中的各种空格?U+00A0
trim()
虽然 是一个不换行空格(不希望被视为空格的空格),但您可以使用简单的正则表达式修剪字符串,同时保留字符串内的所有内容: 
 
string.replaceAll("(^\\h*)|(\\h*$)","")
\h
是水平空格字符:[ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000]
如果您使用的是 JDK8 之前的版本,则需要显式使用字符列表而不是 。\h
U+0160
不是空格,因此不会被修剪。但是你可以简单地用空格来表示字符,然后调用 ,这样你就可以保留字符串“内部”的空格。replace()
trim()
string = string.replace('\u00A0',' ').trim()
有三个不换行的空格字符从 Character.isWhitespace() 方法中排除:、 和、,因此您可能也想替换它们。\u00A0
\u2007
\u202F