我正在尝试输入两个字符串,并检查第一个字符串的任何字符是否等于第二个字符串字符,然后将其替换为“*” 我的代码是
for(int i=0;i<l;i++)
{
for(int j=0;j<l;j++)
{
if(s1.charAt(i) == s2.charAt(j))
{
char c=s2.charAt(j);
c='*';
System.out.println(s2);
}
}
}
但它没有被替换,我该怎么做才能使代码正常运行?
最佳答案
String
在 Java 中是不可变的。因此,要更改 String
中间的一个字符,您必须将其拆分然后连接:
String str = "abcde";
String newStr = str.substring(0, 2) + "_" + str.substring(3); // "ab_de"
一般来说,您不能更改字符串。所有修改都会创建新(修改后的)字符串。特别是,在循环内修改字符串是不好的做法;每次迭代你都会得到一个新的字符串实例。
为了解决您的问题,我建议将第二个字符串中的所有唯一字符收集到 Set
中,然后使用 StringBuilder
构建结果字符串:
public static String modify(String one, String two) {
Set<Character> uniqueChars = new HashSet<>();
for (int i = 0; i < two.length(); i++)
uniqueChars.add(two.charAt(i));
StringBuilder buf = new StringBuilder(one.length());
for(int i = 0; i < one.length(); i++)
buf.append(uniqueChars.contains(one.charAt(i)) ? '*' : one.charAt(i));
return buf.toString();
}
关于java - 在java中使用charAt替换字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52745217/