2010-07-14 7 views
5

im Versuch, das man von einem Array in String machen ersetzen, aber nicht dieses Werkin Ersetzen Array

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

und mit dieser Art und Weise der Arbeit?

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

warum mit Array nicht arbeiten, wie ich verwendet eine ersetzen in Array verwenden kann []

Jetzt habe anderes Problem, das ich, ich will verschiedene ersetzt in Original-Zeichenkette verwenden, wie ich dieses mahe kann ?? ??

+1

Ist 'ein Array von Strings oder ein Array von Zeichen dna'? – VeeArr

+1

Was genau war der Fehler oder Ihre Erwartung - wie Sie aus den Antworten sehen können, haben wir zwei konkurrierende Theorien bereits ;-) –

Antwort

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

Dies funktioniert wie erwartet. Überprüfen Sie Ihren Code, wenn Sie einem ähnlichen Muster folgen.


Sie können erwarten, dass dna[i].replace('T', 'C'); den Inhalt der Zelle ändert dna[i] direkt. Dies ist nicht der Fall, die Zeichenfolge wird nicht geändert, replace wird eine neue Zeichenfolge zurückgeben, wo das Zeichen ersetzt wurde. Es ist notwendig, das Ergebnis der Operation replace einer Variablen zuzuordnen.


Ihren letzten Kommentar zu beantworten:

Strings sind unveränderlich - Sie nicht ein einziges Zeichen in einem String-Objekt ändern. Alle Operationen an Strings (substring, replace, '+', ...) erzeugen immer neue Strings.

Ein Weg, um mehr zu machen, als man wie folgt ersetzen:

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

Dies würde eine Ein-Element-Array von Strings machen, und 'dna [i]' verweist auf die erste (nur) Element. Ich denke, das OP verwirrte ein String-Objekt und ein Array von Zeichen, nicht ein Array von Strings. – Andy

+0

@Andreas, ich denke, er hat eine Reihe von Zeichen, keine Anordnung von Strings. – jjnguy

+0

Ich dachte, er hätte eine Reihe von Zeichenfolgen, nicht von Zeichen. –

2

Ein Array ist nur eine Datenstruktur, die Daten enthält. Es unterstützt keine Operationen für diese Daten. Sie müssen die Algorithmen schreiben, um selbst an den Daten zu arbeiten.

Ein String ist im Grunde ein Char-Array mit einigen Methoden, die Sie aufrufen können. Die replace() Methode ist einer von ihnen.

Die Methode, die Sie würde in etwa so aussehen wollen:

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

Sie würden es dann rufen Sie wie folgt:

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

, dass die erste Instanz von T in dem Array mit einem C ersetzen würde .

Verwandte Themen