java - 如何替换字符串中的多个子字符串实例

标签 java regex string substring stringbuilder

我需要在同一个地方用不同的内容替换一个大字符串的一些内容。

假设我有一个字符串:

String str = "package blah.foo.bar;\n"
           + "import org.blah.blah;\n"
           + "import sel.this.that;\n"
           + "import sel.boo.foo;\n"
           + "...more text";

我想将单词 gen 插入到以 import sel. 开头的语句中,以便最终结果看起来像:import sel.gen.this。那;

我使用以下方法取得了成功,但前提是我知道该子字符串在字符串中的位置。我的问题是我不确定如何使以下代码动态化:

private String modifyString(String str){
    String hold = str.substring(0, str.indexOf(";"));
    hold = new StringBuilder(hold).insert(13, "gen.").toString();
    str = str.replace("(?m)^package.*", hold);
    return str;

}

上面的代码正确地将字符串 package blah.foo.bar; 替换为 package blah.gen.foo.bar;

但这同样只适用于替换字符串的开头部分。我希望能够保存一个子字符串的所有实例,然后在这些子字符串中插入一个子字符串。

最佳答案

您可以使用如下简单的一行:

str = str.replaceAll("import sel\\.", "import sel.gen.");

Regex demo

IdeOne example

关于java - 如何替换字符串中的多个子字符串实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344616/

相关文章:

java - 在Java中使用HTTP post来模拟Web浏览器

java - Jackson 2.6.3 反序列化避免文字 null 添加到集合中

c# - 无法删除字符串中的一组字符

javascript - 替换 JavaScript 中的正则表达式匹配

javascript - 从给定字符串生成所有可能的回文组合(Javascript)

java - Android 通知返回错误的 Activity

基于 Java 2D Tile 的游戏旋转 45 度?

java - 是否可以在非捕获组上使用量词? - 正则表达式

sql-server - SQL Server 中的 TrimTrailingBlanks

string - 比较系统间缓存对象脚本中的字符串