2010-07-14 112 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一審陣列。