Java处理SOAP请求XML元素时换行符\n未被移除的问题
问题原因及解决办法
核心问题
你写的正则表达式里把换行符(\n)加到了允许保留的字符列表里,所以replaceAll根本不会移除它。看代码里的"\u0009\r\n",这里的\n就是你要删的换行符,属于被排除在替换操作外的字符,自然会保留下来。
解决办法
方法1:直接移除换行符(最简单)
如果只需要删除\n,不用写复杂正则,直接用不带正则的replace方法:
nickName = nickName.replace("\n", "");
注意:Java的String是不可变对象,必须把方法返回的新字符串赋值给变量,原字符串不会被修改。
方法2:修改正则表达式(保留其他允许字符,仅移除\n)
把正则里的\n去掉,这样换行符就会被匹配并替换为空:
nickName = nickName.replaceAll("[^" + "\u0009\r" // 去掉了原来的\n + "\u0020-\uD7FF" + "\uE000-\uFFFD" + "\ud800\udc00-\udbff\udfff" + "]", "");
内容的提问来源于stack exchange,提问作者Zia
相关产品推荐
相关产品推荐

