J'ai une chaîne et j'ai besoin de le traverser en tant que tableau de caractères.
Bien sûr, la méthode normale est d'utiliser TOCHARARRAY () CODE>
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
3 Réponses :
Voici comment vous pouvez parcourir une chaîne code> en quelque sorte sous forme de tableau code> char code> sans utiliser TOCHARARRAY () CODE>:
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
}
Eh bien, pas le "IT" que l'OP a demandé ... Si l'OP n'a qu'une méthode n'acceptant un char [] code> qu'ils ne peuvent pas modifier, par exemple, cela ne va pas Aide du tout.
Et où vous stockez ces caractères générés?
"J'ai une chaîne et j'ai besoin de la traverser comme une matrice de caractère" C'est la demande principale de l'OP, ce que je propose de l'aide pour traverser la chaîne, si ce n'est pas ce que l'OP attend qu'il a besoin de modifier la question
C'est vraiment ce que je voulais! Cela souligne quelque chose que je n'ai pas réalisé, ce que la corde de classe stocke simplement son contenu dans une matrice de caractère appelée valeur []. Utilisation de Str.Charat (Int Index) renvoie simplement la valeur [Index]
Non, ce n'est pas le cas. Pas sans réflexion, que vous devriez éviter. Message avec le sous-jacent Si cela n'est pas possible, y a-t-il une raison pour? P>
blockQuote>
première raison: encapsulation. Le tableau est un détail de mise en œuvre privé. P>
Seconde Raison: Immutabilité. Les chaînes sont immuables, mais les matrices jamais em> sont. Donc, vous pouvez modifier le tableau de caractères sous-jacent et la chaîne serait mutée, dont la surprise de tout développeur s'appuie sur l'immuabilité normale. P> Char [] Code> dans une chaîne via réflexion est une recette pour les bogues subtils. Vous pouvez accéder à des caractères individuels dans une chaîne à l'aide de
charat code>, mais si vous avez vraiment besoin d'un
char [] code> Vous devez simplement appeler
TOCHARARRAY CODE>. P >
Et en plus, d'autres références à la même chaîne du pool de string auraient également la même chaîne mutée, entraînant une plus grande confusion.
@ Pokechu22: Pire encore pire, les stratégies de sécurité (autorisations, sources de code, noms d'utilisateur) sont stockées comme des chaînes, ce qui permet de les modifier saperait tout le modèle de sécurité.
Étant donné que vous attendez le tableau, il n'ya aucun moyen d'obtenir un tableau sans créer de nouveau tableau. P>
C'est le moyen le plus propre. Même si vous créez votre propre fonction et que vous faites une affaire, vous finirez par créer un nouveau tableau. P>
Allez avec vos codes actuels. P>
Connexion directe à une référence directe à un
chargeur [] code> d'un objet censé être immuable, serait une très mauvaise idée, surtout si l'objet immuable en question si de type
chaîne code>, qui doit remplir des rôles pertinents de sécurité.
Si vous souhaitez enregistrer un espace mémoire, ne demandez pas le tableau
char [] code>. Vous n'avez pas expliqué, pourquoi vous pensez avoir besoin de cela.
J'ai besoin d'un tableau afin que je puisse itérer à travers elle par index. Cependant, ce que je n'avais pas réalisé et ce que Nicolas Filotto a souligné que les chaînes sont simplement une classe qui stocke la chaîne dans un
Char [] code> tableau. ! Débutants erreur :)