Je sais comment calculer l'index d'un certain caractère ou nombre dans une chaîne, mais existe-t-il une méthode prédéfinie que je puisse utiliser pour me donner le caractère à la nième position? Donc, dans la chaîne "foo", si je demandais le caractère avec l'index 0, il retournerait "f".
Remarque - dans la question ci-dessus, par "caractère", je ne veux pas dire le type de données char, mais une lettre ou un chiffre dans une chaîne. L'important ici est que je ne reçois pas de caractère lorsque la méthode est invoquée, mais une chaîne (de longueur 1). Et je connais la méthode substring (), mais je me demandais s'il y avait une manière plus nette.
char
valeur? Et il sait comment faire,substring()
mais veut juste une façon "plus soignée". Pour info, je peux dire quesubstring()
c'est la meilleure façon.Character.toString
remplit toutes les conditions requises et n'est pas du tout compliqué .substring()
directe.endIndex
(deuxième paramètre) deString.substring(int, int)
est un index exclusif , et il ne lèvera pas d'exceptionindex + 1
aussi longtemps queindex < length()
- ce qui est vrai même pour le dernier caractère de la chaîne.Réponses:
La méthode que vous recherchez est
charAt
. Voici un exemple:Pour plus d'informations, consultez la documentation Java sur
String.charAt
. Si vous voulez un autre tutoriel simple, celui-ci ou celui-ci .Si vous ne voulez pas que le résultat soit un
char
type de données, mais plutôt une chaîne, vous utiliserez laCharacter.toString
méthode:Si vous voulez plus d'informations sur la
Character
classe et latoString
méthode, j'ai tiré mes informations de la documentation sur Character.toString .la source
Tu veux
.charAt()
Voici un tutoriel
Retour
s
Si vous êtes déterminé à avoir une chaîne, il existe deux façons de convertir un caractère en chaîne:
Ou
Ou même
Par exemple.
la source
Character.toString
?String mychar = String.valueOf("mystring".charAt(2));
String mychar = ""+"mystring".charAt(2);
parce que c'est la plus concise. D'autres auront une opinion différente à ce sujet.Aucune des réponses proposées ne fonctionne pour les paires de substitution utilisées pour coder des caractères en dehors du plan multilingue multilingue .
Voici un exemple utilisant trois techniques différentes pour parcourir les "caractères" d'une chaîne (y compris en utilisant l'API de flux Java 8). Veuillez noter que cet exemple inclut des caractères du plan multilingue supplémentaire (SMP) Unicode. Vous avez besoin d'une police appropriée pour afficher correctement cet exemple et le résultat.
Itération des caractères
La première solution est une simple boucle sur toute
char
la chaîne:Itération de points de code
La deuxième solution utilise également une boucle explicite, mais en accédant aux points de code individuels avec codePointAt et en incrémentant l'index de la boucle en fonction de charCount :
Itérer sur des points de code à l'aide de l'API Stream
La troisième solution est essentiellement la même que la seconde, mais en utilisant l' API Java 8 Stream :
Résultats
Lorsque vous exécutez ce programme de test, vous obtenez:
Comme vous pouvez le voir (si vous pouvez afficher correctement les hiéroglyphes), la première solution ne gère pas correctement les caractères en dehors du BMP Unicode. D'un autre côté, les deux autres solutions conviennent bien aux paires de substitution.
la source
Vous êtes assez coincé avec
substring()
, compte tenu de vos besoins. La méthode standard seraitcharAt()
, mais vous avez dit que vous n'accepteriez pas un type de données char.la source
toString()
cela ne fonctionnera pas, etvalueOf()
ne concerne que les nombres (je pense que je peux me tromper), alors comment convertir un char en chaîne?char
"Character.toString
devrait fonctionner (c'est une méthode statique de laCharacter
classe.Vous pouvez utiliser le
String.charAt(int index)
résultat de la méthode comme paramètre pour String.valueOf (char c) .la source
Une approche hybride combinant
charAt
avec votre exigence de ne pas obtenir d'omble pourrait êtreMais ce n'est pas vraiment "plus propre" que
substring()
pour être honnête.la source
C'est aussi simple que:
la source
Voici le bon code. Si vous utilisez des zybooks, cela répondra à tous les problèmes.
la source
si quelqu'un se débat avec kotlin, le code est:
cela renverra le caractère en position 1, dans ce cas k souvenez-vous, l'index commence en position 0, donc dans cet exemple: kotlin serait k = position 0, o = position 1, t = position 2, l = position 3, i = position 4 et n = position 5
la source
Comme ça:
la source
String
de longueur 1 est souhaité, pas unchar
.charAt()
une solution possible. Qu'est-ce que cette réponse ajoute?charAt()
des indices basés sur 1 sont utilisés, en ayant le seul caractère différenta
en troisième position. Si cela était vrai, il serait préférable pour vous de dire ou d'expliquer cela plutôt que d'y faire allusion. En réalité, ce n'est pas vrai:charAt()
utilise des indices basés sur 0, ces
sera le cas'h'
.