Sé cómo calcular el índice de un determinado carácter o número en una cadena, pero ¿hay algún método predefinido que pueda usar para darme el carácter en la enésima posición? Entonces, en la cadena "foo", si preguntara por el carácter con índice 0, devolvería "f".
Nota: en la pregunta anterior, por "carácter" no me refiero al tipo de datos char, sino a una letra o número en una cadena. Lo importante aquí es que no recibo un carácter cuando se invoca el método, sino una cadena (de longitud 1). Y sé sobre el método substring (), pero me preguntaba si había una forma más ordenada.
char
valor? Y él sabe cómo hacerlo,substring()
pero solo quiere una forma "más ordenada". Para su información, puedo decir quesubstring()
es la mejor manera.Character.toString
cumple con todos los requisitos necesarios y no es desordenado en absoluto.substring()
directamente.endIndex
(segundo parámetro) deString.substring(int, int)
es un índice exclusivo , y no arrojará una excepción durante elindex + 1
tiempoindex < length()
que sea cierto, incluso para el último carácter de la cadena.Respuestas:
El método que estás buscando es
charAt
. Aquí hay un ejemplo:Para obtener más información, consulte la documentación de Java en
String.charAt
. Si quieres otro tutorial simple, este o este .Si no desea el resultado como un
char
tipo de datos, sino como una cadena, usaría elCharacter.toString
método:Si desea más información sobre la
Character
clase y eltoString
método, extraje mi información de la documentación en Character.toString .fuente
Usted quiere
.charAt()
Aquí hay un tutorial
devoluciones
s
Si estás empeñado en tener una cadena, hay un par de formas de convertir un char en una cadena:
O
O incluso
Por ejemplo.
fuente
Character.toString
?String mychar = String.valueOf("mystring".charAt(2));
String mychar = ""+"mystring".charAt(2);
porque es la más concisa. Otros diferirán en su opinión sobre esto.Ninguna de las respuestas propuestas funciona para pares sustitutos utilizados para codificar caracteres fuera del plano multiligual básico Unicode .
Aquí hay un ejemplo que usa tres técnicas diferentes para iterar sobre los "caracteres" de una cadena (incluido el uso de Java 8 stream API). Tenga en cuenta que este ejemplo incluye caracteres del Plano multilingüe suplementario Unicode (SMP). Necesita una fuente adecuada para mostrar este ejemplo y el resultado correctamente.
Iteración de caracteres
La primera solución es un bucle simple sobre toda
char
la cadena:Iteración de puntos de código
La segunda solución también usa un bucle explícito, pero accede a puntos de código individuales con codePointAt e incrementa el índice del bucle de acuerdo con charCount :
Iterar sobre puntos de código usando la API Stream
La tercera solución es básicamente la misma que la segunda, pero con la API Java 8 Stream :
Resultados
Cuando ejecuta ese programa de prueba, obtiene:
Como puede ver (si puede mostrar los jeroglíficos correctamente), la primera solución no maneja correctamente los caracteres fuera del BMP de Unicode. Por otro lado, las otras dos soluciones tratan bien con pares sustitutos.
fuente
Estás bastante atrapado
substring()
, dados tus requisitos. La forma estándar seríacharAt()
, pero usted dijo que no aceptará un tipo de datos char.fuente
toString()
que no funcionará en él, yvalueOf()
es solo para números (creo que puedo estar equivocado), entonces, ¿cómo convierto un char en una cadena?char
"Character.toString
debería funcionar (es un método estático de laCharacter
clase.Puede usar el
String.charAt(int index)
resultado del método como parámetro para String.valueOf (char c) .fuente
Un enfoque híbrido que se combine
charAt
con su requisito de no obtener char podría serPero eso no es realmente "más ordenado" que
substring()
ser sincero.fuente
Es tan simple como:
fuente
Aquí está el código correcto. Si está utilizando zybooks, esto resolverá todos los problemas.
fuente
Si alguien está luchando con Kotlin, el código es:
esto devolverá el carácter en la posición 1, en este caso k recuerde, el índice comienza en la posición 0, por lo que en esta muestra: kotlin sería k = posición 0, o = posición 1, t = posición 2, l = posición 3, i = posición 4 yn = posición 5
fuente
Me gusta esto:
fuente
String
se desea una longitud 1, no unachar
.charAt()
como una posible solución. ¿Qué agrega esta respuesta?charAt()
usa índices basados en 1, al tener el único personaje diferentea
en la tercera posición. Si eso fuera cierto, entonces sería mejor para usted decirlo o explicarlo que insinuarlo. En realidad, eso no es cierto:charAt()
usa índices basados en 0, asís
será'h'
.