Java 如何替换给定起始索引的字符串中的特定字符

Java 如何替换给定起始索引的字符串中的特定字符,java,Java,我得到一个字符串=“小计(9,L7:L17)” 我想用给定字符串中的2替换所有L,但不应更改小计中的L,或用括号内的2替换所有L 我在java方法中尝试了replaceAll(),但它将所有L替换为2 产生的“小计2(9,27:217)”哪一个是错误的 我想要什么 结果类似于:“小计(9,27:217)”您可以根据第一次出现的()将字符串拆分为两个子字符串,然后替换第二部分的字符并重新组合结果: String string = "SUBTOTAL(9,L7:L17)"; int replaceS

我得到一个字符串=
“小计(9,L7:L17)”

我想用给定字符串中的2替换所有L,但不应更改小计中的L,或用括号内的2替换所有L

我在java方法中尝试了
replaceAll()
,但它将所有L替换为2 产生的
“小计2(9,27:217)”
哪一个是错误的

我想要什么
结果类似于:
“小计(9,27:217)”

您可以根据第一次出现的
)将字符串拆分为两个子字符串,然后替换第二部分的字符并重新组合结果:

String string = "SUBTOTAL(9,L7:L17)";
int replaceStartIndex = string.indexOf('(');

System.out.println(string.substring(0, replaceStartIndex) 
  + string.substring(replaceStartIndex).replaceAll("L", "2"));

输出小计(9,27:217)

java字符串还具有对第一个匹配进行操作的
replace()
only@SharonBenAsher是的,但第一个匹配项恰恰是不应替换的匹配项。您需要使用
indexOf
查找左括号,然后在该索引后搜索
L