2010-07-14 30 views
5

im cercando fanno una sostituire nella stringa da un array, ma questo non funzionanoSostituire in Array

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

e con questo modo di lavorare?

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

Perché non lavorare con array, come posso usare l'uso di una sostituzione in array []

ora ho altro problema, voglio utilizzare vari sostituisce nella stringa originale, come posso Mahé questo ?? ??

+1

è 'dna' un array di stringhe o un array di caratteri? – VeeArr

+1

Che cosa esattamente è stato l'errore o la vostra aspettativa? Come potete vedere dalle risposte, abbiamo già due teorie in competizione ;-) –

risposta

8
String dna[] = {"ATCTA"}; 
int i = 0; 
dna[i] = dna[i].replace('T', 'C'); 
System.out.println(dna[i]); 

Funziona come previsto. Controlla il tuo codice se segui uno schema simile.


Si possono aver aspettato, che dna[i].replace('T', 'C'); cambia il contenuto della cella dna[i] direttamente. Questo non è il caso, la stringa non verrà modificata, replace restituirà una nuova stringa in cui il carattere è stato sostituito. È necessario assegnare il risultato dell'operazione replace a una variabile.


Per rispondere alla tua ultima osservazione:

stringhe sono immutabili - non è possibile modificare un singolo carattere all'interno di un oggetto String. Tutte le operazioni su Stringhe (sottostringa, sostituisci, '+', ...) creano sempre nuove stringhe.

Un modo per rendere più di una sostituzione è come questo:

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

Ciò renderebbe un array di stringhe a un elemento e 'dna [i]' rimanda al primo (solo) elemento. Penso che l'OP confondesse un oggetto String e una serie di caratteri, non una serie di stringhe. – Andy

+0

@Andreas, penso che abbia una matrice di caratteri, non una serie di stringhe. – jjnguy

+0

Pensavo avesse una serie di stringhe, non di personaggi. –

2

Una matrice è solo una struttura di dati che contiene dati. Non supporta alcuna operazione su quei dati. È necessario scrivere gli algoritmi per lavorare sui dati da soli.

A String è in pratica un array di caratteri con alcuni metodi che è possibile chiamare. Il metodo replace() è uno di questi.

Il metodo che si desidera sarebbe simile a questa:

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; 
     } 
    } 
} 

Si potrebbe quindi chiamare in questo modo:

replace(dna, 'T', 'C'); 

che dovrebbe sostituire la prima istanza di T nella matrice con una C .

Problemi correlati