如何在以下字符串中转换分隔符

时间:2014-03-11 12:12:52

标签: java regex

String str =   "1000458551||A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F||1||7707||0||0||1002||1373569142000||HTC One||val||4.1.2||0||1.01.20130206.15441";
str.replaceAll("(|\\|)", "|");

但是分隔符没有被替换,我在这里做错了什么?

感谢您提前回复

2 个答案:

答案 0 :(得分:3)

您的代码的主要问题是您需要分配从调用replace()返回的字符串:

str = str.replace("||", "|");

在java中,字符串是不可变的 - 它们无法更改。字符串操作方法返回^ new String *,因此要产生任何效果,必须将返回的值赋回给变量 - 通常是在调用之前保存String的相同的变量。

另外,请勿使用replaceAll(),它会在其搜索字词中使用正则表达式。而是使用replace(),它仍然替换所有出现的内容,但使用纯文本作为其搜索词。在正则表达式中,管道字符具有特殊含义,因此您需要转义它们中的每一个,这会造成不必要的丑陋代码。

答案 1 :(得分:0)

String newStr = str.replaceAll("\\|\\|", "|");