2010-07-14 80 views
5

IM试图使字符串替换从阵列但这不工作在阵列替换

dna[i].replace('T', 'C'); 

,并用这种方式工作?

"ATCTA".replace('T', 'C'); 

为什么不与阵列工作,我怎么可以使用使用替换[]数组

现在我有其他的问题,我想在原来的字符串中使用不同的内容替换,我怎么可以马埃这个? ??

+1

是'dna'字符串数组或字符数组? – VeeArr 2010-07-14 20:52:57

+1

究竟是什么错误或你的期望 - 从答案中可以看出,我们有两个相互竞争的理论已经;-) – 2010-07-14 21:01:54

回答

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]的内容。情况并非如此,字符串不会被更改,replace将返回一个新的字符串,其中char已被替换。有必要将replace操作的结果分配给一个变量。


要回答你的最后的评论:

字符串是不可变的 - 你不能改变一个String对象内的单个字符。字符串上的所有操作(substring,replace,'+',...)总是创建新的字符串。

,使多个替代的方法是这样的:

dna[i] = dna[i].replace('T', 'C').replace('A', 'S'); 
+0

这将使一个字符串的单元素数组,和'dna [i]'引用第一个只)元素。我认为OP令人困惑的是一个String对象和一个字符数组,而不是一个字符串数组。 – Andy 2010-07-14 20:56:49

+0

@Andreas,我认为他有一个字符数组,而不是一串字符串。 – jjnguy 2010-07-14 20:57:59

+0

我以为他有一串字符串,而不是字符。 – 2010-07-14 20:59:41

2

数组只是一个保存数据的数据结构。它不支持对该数据的任何操作。你需要编写算法来自己处理数据。

A 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'); 

这将有C取代的T一审阵列。