我试图在数组中替换一个字符串,但这不起作用
dna[i].replace('T', 'C');
以这种方式工作?
"ATCTA".replace('T', 'C');
为什么不使用数组,如何使用数组[]
中的替换现在我还有其他问题,我希望在原始字符串中使用各种替换,我怎么能这样呢????
答案 0 :(得分:8)
String dna[] = {"ATCTA"};
int i = 0;
dna[i] = dna[i].replace('T', 'C');
System.out.println(dna[i]);
这可以按预期工作。如果您遵循类似的模式,请仔细检查您的代码。
您可能已经预料到,dna[i].replace('T', 'C');
会直接更改单元格dna[i]
的内容。情况并非如此,String不会被更改,replace
将返回一个新的String,其中char已被替换。有必要将replace
操作的结果分配给变量。
回答你的上一条评论:
字符串是不可变的 - 您无法更改String对象中的单个字符。对字符串的所有操作(substring,replace,'+',...)总是创建新的字符串。
进行多次替换的方法如下:
dna[i] = dna[i].replace('T', 'C').replace('A', 'S');
答案 1 :(得分:2)
数组只是一个保存数据的数据结构。它不支持对该数据的任何操作。您需要编写算法来自行处理数据。
String
基本上是一个char数组,其中包含一些可以调用的方法。 replace()
方法就是其中之一。
您想要的方法如下所示:
static void replace(char[] arr, char find, char replace) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == find) {
arr[i] = replace;
return;
}
}
}
然后你会这样称呼它:
replace(dna, 'T', 'C');
这将用T
替换数组中C
的第一个实例。