我需要在同一个地方替换不同内容的大字符串的一些内容.
让我们说我有一个字符串:
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.that;
我已经成功使用以下方法,但只有当我知道子字符串在字符串中的位置时.我的问题是,我不确定如何使以下代码动态:
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.");
正则表达式演示
IdeOne的例子