我是一名正在学习Java的学生,我有这段代码:
lletres = lletres.replace(lletres.charAt(2), codi.charAt(codi.indexOf(lletres.charAt(2)) + 1));
lletres
是一个字符串,它就像这样
lletres = "BBB"
结果是" CCC"我只想改变最后的B,所以结果可能是这样的:" BBC"。
答案 0 :(得分:2)
阅读String.replace
的文档应该解释这里发生的事情(我用粗体标记了相关部分):
返回通过使用
oldChar
替换此字符串中newChar
的所有出现次数而产生的字符串。
解决这个问题的一种方法是将字符串分解为您想要的部分,然后再将其重新组合在一起。 E.g:
lletres = lletres.substring(0, 2) + (char)(lletres.charAt(2) + 1);
答案 1 :(得分:1)
正如其他人指出的replace()
将取代所有匹配的事件。
因此,您可以使用replaceFirst()
来接受regx
lletres = lletres.replaceFirst( lletres.charAt( 2 ) + "$", (char) ( lletres.charAt( 2 ) + 1 ) + "" )
答案 2 :(得分:0)
您可以将StringBuilder用于您的目的:
String lletres = "BBB";
String codi = "CCC";
StringBuilder sb = new StringBuilder(lletres);
sb.setCharAt(2, codi.charAt(codi.indexOf(lletres.charAt(2)) + 1));
lletres = sb.toString();
答案 3 :(得分:0)
如果您只需要更改字符串中的最后一个匹配项,则需要先将字符串拆分为多个部分。我希望以下代码片段对您有所帮助。
String lletres = "BBB";
int lastIndex = lletres.lastIndexOf('B');
lletres = lletres.substring(0, lastIndex) + 'C' + lletres.substring(lastIndex+1);
此代码将找到最后一个字母B的索引并将其存储在lastIndex中。然后它拆分字符串并用C字母替换那个B字母。
请注意,此代码段不会检查字符串中是否包含字母B.
稍作修改,你可以用它来替换字符串的整个部分,而不仅仅是字母。 :)
答案 4 :(得分:0)
试试这个。
class Rplce
{
public static void main(String[] args)
{
String codi = "CCC";
String lletres = "BBB";
int char_no_to_be_replaced = 2;
lletres = lletres.substring(0,char_no_to_be_replaced ) + codi.charAt(codi.indexOf(lletres.charAt(char_no_to_be_replaced )) + 1) + lletres.substring(char_no_to_be_replaced + 1);
System.out.println(lletres);
}
}
答案 5 :(得分:0)
用它来替换最后一个字符
lletres = lletres.replaceAll(".{1}$", String.valueOf((char) (lletres.charAt(2) + 1)));
答案 6 :(得分:0)
假设您在最后一个索引处有动态值,并且您希望替换该值将增加一个然后使用此代码
String lletres = "BBB";
int atIndex = lletres.lastIndexOf('B');
char ReplacementChar = (char)(lletres.charAt(lletres.lastIndexOf('B'))+1);
lletres= lletres.substring(0, atIndex)+ReplacementChar;
System.out.println(lletres);
<强>输出强>
BBC