String str = "1000458551||A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F||1||7707||0||0||1002||1373569142000||HTC One||val||4.1.2||0||1.01.20130206.15441";
str.replaceAll("(|\\|)", "|");
但是分隔符没有被替换,我在这里做错了什么?
感谢您提前回复
答案 0 :(得分:3)
您的代码的主要问题是您需要分配从调用replace()
返回的字符串:
str = str.replace("||", "|");
在java中,字符串是不可变的 - 它们无法更改。字符串操作方法返回^ new String *,因此要产生任何效果,必须将返回的值赋回给变量 - 通常是在调用之前保存String的相同的变量。
另外,请勿使用replaceAll()
,它会在其搜索字词中使用正则表达式。而是使用replace()
,它仍然替换所有出现的内容,但使用纯文本作为其搜索词。在正则表达式中,管道字符具有特殊含义,因此您需要转义它们中的每一个,这会造成不必要的丑陋代码。
答案 1 :(得分:0)
String newStr = str.replaceAll("\\|\\|", "|");