这个问题在这里已有答案:
解决了,感谢Pshemo。问题是String包含一个无中断空间,可以使用以下命令删除:
val = val.replaceAll("[\\s\\u00A0]", "");
好吧,我遇到了一个奇怪的问题,我只是想不出来 - 或者错误很明显,我只是愚蠢。
我正在开发Java Web应用程序,用户将通过文本框输入编号值。我希望用户能够输入“100 000”,所以我自然要收集作为String对象的值,删除所有空格,并将其解析为int。
但是,String中的空格不会按预期删除。有没有人对此代码无效的原因有任何见解?
我已经尝试了所有这些;
val = val.replaceAll("\\s+", "");
val = val.replaceAll("\\s", "");
val = val.replaceAll(" ", "");
代码目前看起来像这样:
if(value == 0) {
String val = request.getParameter("value");
if(val != null) {
val = val.replaceAll("\\s", "").replaceAll(" ", "");
try {
value = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Returning JSON with error;
}
}
}
更新:如果我不从请求中获取字符串,并将其初始化为“100 000”,它确实有效。它可能是与浏览器字符集相关的东西吗?
我也无法再提供代码 - 这直接发生在javax.servlet.http.HttpServlet#doPost中
String value = "100 000" // This works!
我希望输出没有任何剩余空格,但实际输出仍然包含空格,例如“100 000”
String sss = "100 000";
sss = sss.replaceAll(" ", "");
System.out.println (sss);
int x = Integer.parseInt(sss);
System.out.println(x);
这工作得很好,你在其他地方遇到了问题。
如果您能向我们展示更多代码,我们可能会提供更多帮助。