2010-07-14 6 views
5

im essayant faire un substituons dans la chaîne d'un tableau, mais ce travail Do notRemplacer en Array

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

et ce travail de façon?

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

pourquoi ne pas travailler avec tableau, comment je peux utiliser une utilisation remplacer dans le tableau []

Maintenant, j'ai un autre problème, je veux utiliser différentes dans la chaîne d'origine remplace, comment je peux Mahe cela ?? ??

+1

est 'dna' un tableau de chaînes ou un tableau de caractères? – VeeArr

+1

Quelle était exactement l'erreur ou votre attente - comme vous pouvez le voir dans les réponses, nous avons déjà deux théories concurrentes ;-) –

Répondre

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

Cela fonctionne comme prévu. Vérifiez votre code si vous suivez un modèle similaire.


Vous avez sans doute prévu que dna[i].replace('T', 'C'); modifie le contenu de la cellule dna[i] directement. Ce n'est pas le cas, la chaîne ne sera pas modifiée, replace renverra une nouvelle chaîne où le caractère a été remplacé. Il est nécessaire d'affecter le résultat de l'opération replace à une variable.


Pour répondre à votre dernier commentaire:

Les chaînes sont immuables - vous ne pouvez pas changer un seul omble chevalier dans un objet String. Toutes les opérations sur les chaînes (sous-chaîne, remplacer, '+', ...) créent toujours de nouvelles chaînes.

Une façon de faire plus d'un Replace est comme ceci:

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

Ceci ferait un tableau d'un seul élément de chaînes, et 'dna [i]' références le premier (seulement) élément. Je pense que l'OP confondait un objet String et un tableau de caractères, pas un tableau de Strings. – Andy

+0

@Andreas, je pense qu'il a un tableau de caractères, pas un tableau de chaînes. – jjnguy

+0

Je pensais qu'il avait un tableau de chaînes, pas de caractères. –

2

Un tableau est simplement une structure de données contenant des données. Il ne supporte aucune opération sur ces données. Vous devez écrire les algorithmes pour travailler sur les données vous-même.

Un String est fondamentalement un tableau char avec quelques méthodes que vous pouvez appeler à ce sujet. La méthode replace() en fait partie.

La méthode que vous voulez ressemblerait à quelque chose comme ceci:

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

Vous appelleriez alors comme si:

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

qui remplacerait la première instance de T dans le tableau avec un C .