java - String.replace() 不替换所有出现的地方

标签 java string replace

我有一个很长的字符串,看起来与此类似。

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/

相关文章:

java - C# 字符串/字符串 : Compare string like in Java (by Reference)

javascript - selenium IDE javascript 替换 : Throw an exception: missing ; before statement

string - Kotlin - 是否有一个基本函数可以用引用字符串中的多个字符串替换多个字符串?

javascript 字符串替换方法未按预期工作

java - Jsp中的多个依赖下拉列表

java - 在实例化嵌入式数据库的同一单元测试中加载 UDF 和自定义模块

java - 与数字关联的最小基数

regex - 检查字符串是否以 OCaml 中的某些文本结尾的最方便方法?

python - 如何创建空字符串并更新它

php - 在 PHP 中将字符串转换为整数