255 votes

Obtenir un caractère de chaîne de caractères par index

Je sais comment calculer l'indice d'un certain caractère ou d'un certain nombre dans une chaîne de caractères, mais existe-t-il une méthode prédéfinie que je peux utiliser pour obtenir le caractère à l'endroit où se trouve l'indice ? nième position ? Ainsi, dans la chaîne "foo", si je demandais le caractère d'indice 0, il retournerait "f".

Remarque - dans la question ci-dessus, par "caractère", je n'entends pas le type de données char, mais une lettre ou un chiffre dans une chaîne. L'important ici est que je ne reçoive pas un caractère lorsque la méthode est invoquée, mais une chaîne de caractères (de longueur 1). Je connais la méthode substring(), mais je me demandais s'il n'y avait pas un moyen plus efficace.

13 votes

C'est le cas ? La réponse est assez simple.

0 votes

As-tu remarqué qu'il ne veut pas char valeur ? Et il sait comment faire substring() mais veut juste un moyen plus "propre". Pour info, je peux dire que substring() est le moyen le plus sûr.

3 votes

@user845279 Character.toString remplit toutes les conditions nécessaires et n'est pas du tout désordonné.

372voto

Ricardo Altamirano Points 2924

La méthode que vous recherchez est charAt . Voici un exemple :

String text = "foo";
char charAtZero = text.charAt(0);
System.out.println(charAtZero); // Prints f

Pour plus d'informations, voir le Documentation Java sur String.charAt . Si vous voulez un autre tutoriel simple, celui-ci o celui-ci .

Si vous ne voulez pas le résultat en tant que char mais plutôt en tant que chaîne de caractères, vous utiliserez la balise Character.toString méthode :

String text = "foo";
String letter = Character.toString(text.charAt(0));
System.out.println(letter); // Prints f

Si vous voulez plus d'informations sur le Character et la classe toString méthode, j'ai tiré mes informations de la documentation sur Character.toString .

1 votes

"La chose importante ici est que je ne reçois pas un char lorsque la méthode est invoquée, mais une chaîne", mais merci quand même (upvote) :D

1 votes

Je pense que la réponse de Sylvain Leroux est meilleure. doc sur le caractère

0 votes

Je suis d'accord avec @ChaojunZhong este est une réponse plus appropriée puisqu'il n'est pas conseillé d'utiliser charAt() car vous auriez des problèmes lorsque vous avez des caractères qui nécessitent 2 unités de code.

47voto

ametren Points 1568

Vous voulez .charAt()

Voici un tutoriel

"mystring".charAt(2)

renvoie à s

Si vous tenez absolument à avoir une chaîne de caractères, il existe plusieurs façons de convertir un caractère en chaîne de caractères :

String mychar = Character.toString("mystring".charAt(2));

Ou

String mychar = ""+"mystring".charAt(2);

Ou même

String mychar = String.valueOf("mystring".charAt(2));

Par exemple.

0 votes

@ametren La concaténation de chaînes de caractères est-elle préférable à Character.toString ?

0 votes

Je pense que cela peut se résumer à une question de préférence personnelle. Vous pourriez aussi faire String mychar = String.valueOf("mystring".charAt(2));

0 votes

Pour en rajouter, ma préférence personnelle dans ce cas serait la suivante String mychar = ""+"mystring".charAt(2); parce que c'est le plus concis. Les autres auront une opinion différente à ce sujet.

8voto

Thomas Points 2986

Vous êtes plutôt coincé avec substring() en fonction de vos besoins. La méthode standard serait la suivante charAt() mais vous avez dit que vous n'accepteriez pas un type de données char.

0 votes

C'est juste. Mais, puisque char est un type primitif, je suppose que toString() ne fonctionnera pas sur elle, et valueOf() est seulement pour les nombres (je pense, je peux me tromper), alors comment puis-je convertir un char en chaîne de caractères ?

0 votes

"dans la question ci-dessus, par "caractère", je n'entends pas le type de données char" -- je ne lis pas cela comme "je n'accepterai pas un char "

0 votes

@Bluefire Voir ma réponse. Character.toString devrait fonctionner (il s'agit d'une méthode statique de l'application Character classe.

8voto

Francisco Spaeth Points 10069

Vous pourriez utiliser le String.charAt(int index) comme paramètre pour la méthode String.valueOf(char c) .

String.valueOf(myString.charAt(3)) // This will return a string of the character on the 3rd position.

5voto

fvu Points 21471

Une approche hybride combinant charAt avec votre exigence de ne pas obtenir de char pourrait être

newstring = String.valueOf("foo".charAt(0));

Mais ce n'est pas vraiment plus "soigné" que substring() pour être honnête.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X