Java 从字符串中删除千位分隔符
我一直试图从这个字符串中删除一个千分位符,但没有成功 我尝试了Java 从字符串中删除千位分隔符,java,string,Java,String,我一直试图从这个字符串中删除一个千分位符,但没有成功 我尝试了trim(),替换(“\\s”)和unicode值,如'\u00A0','\u2007','\u202F',但没有成功。下图显示了字符串 您看到的字符是一个不间断空格:\u00a0。您可以使用String.replace来摆脱它,例如 value = value.replace("\u00a0", ""); 通常,在过滤用户输入时,尝试删除所有坏字符是一个坏主意,您只需要保留好字符:),因此,与其尝试创建坏分隔符列表,不如对允许包含
trim()
,替换(“\\s”)
和unicode值,如'\u00A0'
,'\u2007'
,'\u202F'
,但没有成功。下图显示了字符串
您看到的字符是一个不间断空格:
\u00a0
。您可以使用String.replace来摆脱它,例如
value = value.replace("\u00a0", "");
通常,在过滤用户输入时,尝试删除所有坏字符是一个坏主意,您只需要保留好字符:),因此,与其尝试创建坏分隔符列表,不如对允许包含在数字中的字符列表求反
value = value.replace("[^0-9.+-]", "");
首先,它为什么会存在,可以通过更改格式化数字的代码来解决这个问题吗?这个值来自外部源(api),由于空格的原因,我似乎无法将它转换为BigDecimal。只需替换所有不是数字的内容或[.+-]
使用空字符串时,我也尝试过替换空字符串。不,正如你在我的帖子中看到的那样,我尝试过替换。或者大写字母“a”和\u00a0中的“a”之间有区别吗?没有区别。它是相同的unicode字符:160十进制,就像你的屏幕截图一样,00A0十六进制。这很有效,但有趣的是,我以前确实尝试过这个