我有一个很长的字符串,看起来与此类似。
355,356,357,358,359,360,361,382,363,364,365,366,360,361,363,366,360,361,363,366,360,361,363,366,360,361,363,366,360,361,363,366,360,361,363,366,360,361,363,366,368,369,313,370,371,372,373,374,375,376,377,378,379,380,381,382,382,382,382,382,382,383,384,385,380,381,382,382,382,382,382,386,387,388,389,380,381,382,382,382,382,382,382,390,391,380,381,382,382,382,382,382,392,393,394,395,396,397,398,399,....
当我尝试使用以下代码从字符串中删除数字 382 时。
String str = "355,356,357,358,359,360,361,382,363,364,365,366,360,361,363,366,360,361,363,366,360,361,363,366,360,361,363,366,360,361,363,366,360,361,363,366,360,361,363,366,368,369,313,370,371,372,373,374,375,376,377,378,379,380,381,382,382,382,382,382,382,383,384,385,380,381,382,382,382,382,382,386,387,388,389,380,381,382,382,382,382,382,382,390,391,380,381,382,382,382,382,382,392,393,394,395,396,397,398,399,...."
str = str.replace(",382,", ",");
但似乎并不是所有的出现都被替换了。原来出现次数超过3000次的字符串,替换后还剩下630次左右。
String.replace() 的功能是否有限?如果是这样,有没有可能实现我所需要的方法?
最佳答案
您还需要替换结尾的逗号(如果存在,则不会出现在列表的最后):
str = str.replaceAll("\\b382,?", "");
注意\b
字边界以防止匹配"-,1382,-"
。
以上内容将转换为:
382,111,382,1382,222,382
至:
111,1382,222
关于java - String.replace() 不替换所有出现的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33182696/