如何在Java中修剪无中断空间?

2022-09-01 01:15:25

我已经输入了一个输入文件,我需要处理并丢弃所有空格,包括不间断空格(您可以通过按压然后从键盘的数字板键入来在记事本中生成它)或任何其他形式的空格。我尝试过String.trim(),但它没有修剪。U+00A0 Alt0160U+00A0

我是否需要显式检查,然后,或者是否有一种简单的方法来修剪Java中的各种空格?U+00A0trim()


答案 1

虽然 是一个不换行空格(不希望被视为空格的空格),但您可以使用简单的正则表达式修剪字符串,同时保留字符串内的所有内容:  

string.replaceAll("(^\\h*)|(\\h*$)","")
  • \h是水平空格字符:[ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000]

如果您使用的是 JDK8 之前的版本,则需要显式使用字符列表而不是 。\h


答案 2

U+0160不是空格,因此不会被修剪。但是你可以简单地用空格来表示字符,然后调用 ,这样你就可以保留字符串“内部”的空格。replace()trim()

string = string.replace('\u00A0',' ').trim()

三个不换行的空格字符从 Character.isWhitespace() 方法中排除:、 和、,因此您可能也想替换它们。\u00A0\u2007\u202F