Obtener carácter en cadena por índice en Java
-
Obtener el carácter
String
utilizando el métodocharAt()
en Java -
Convierta Char en String utilizando el método
String.valueOf()
- Obtener Char Array de una cadena en Java
- Obtención de caracteres del plano multilingüe suplementario (SMP) de Unicode
- Resumen
Este tutorial presenta cómo obtener caracteres String
por índice en Java y también enumera algunos códigos de ejemplo para comprender el tema.
Las cadenas se utilizan para almacenar una secuencia de caracteres. Al igual que los arrays, las cadenas también siguen una indexación basada en cero. Esto significa que al primer carácter de la cadena se le asigna un valor de índice de cero. Podemos obtener caracteres individuales de una cadena utilizando sus índices. En este tutorial, aprenderemos cómo hacer esto.
Obtener el carácter String
utilizando el método charAt()
en Java
El método charAt()
toma un valor de índice como parámetro y devuelve un carácter presente en ese índice en la cadena. Es la forma más sencilla de obtener caracteres de una cadena y es un método de clase String
.
public class Demo {
public static void main(String[] args) {
String s = "test string";
char characterAtIdx1 = s.charAt(1); // character e
char characterAtIdx4 = s.charAt(4); // whitespace
char characterAtIdx5 = s.charAt(5); // character s
System.out.println("The string is: " + s);
System.out.println("Character at Index 1: " + characterAtIdx1);
System.out.println("Character at Index 4: " + characterAtIdx4);
System.out.println("Character at Index 5: " + characterAtIdx5);
}
}
Producción :
The string is: test string
Character at Index 1: e
Character at Index 4:
Character at Index 5: s
Como vimos en el código anterior, el tipo de retorno de este método es char. Podemos convertir este tipo char en una cadena usando el método toString()
de la clase Character
e incluso obtener la longitud de esta cadena usando el método length()
.
public class Demo {
public static void main(String[] args) {
String s = "test string";
char characterAtIdx6 = s.charAt(6); // character t
String stringAtIdx6 = Character.toString(characterAtIdx6); // char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
Producción :
Length: 1
String: t
Convierta Char en String utilizando el método String.valueOf()
Después de obtener un carácter de una cadena, podemos usar el método String.valueOf()
para convertir un carácter en una String
si es necesario.
public class Demo {
public static void main(String[] args) {
String s = "test string";
char characterAtIdx6 = s.charAt(6); // character t
String stringAtIdx6 = String.valueOf(characterAtIdx6); // char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
Producción :
Length: 1
String: t
También podemos concatenar una cadena vacía al carácter para convertirla en una cadena. Las citas sin nada en el medio representan una cadena vacía. Esta es una de las formas más simples e implícitas de obtener un objeto String
en Java.
public class Demo {
public static void main(String[] args) {
String s = "test string";
char characterAtIdx6 = s.charAt(6); // character t
String stringAtIdx6 = "" + characterAtIdx6; // char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
Producción :
Length: 1
String: t
Obtener Char Array de una cadena en Java
Podemos obtener un elemento de array por su índice con la ayuda de corchetes. Si convertimos nuestra cadena en un array de tipo char, podemos obtener cualquier carácter de ella.
Java proporciona un conveniente método toCharArray()
que devuelve un array de caracteres. Podemos usar este método en una cadena y obtener un array de caracteres para ella.
public class Demo {
public static void main(String[] args) {
String s = "test string";
char[] charArr = s.toCharArray();
System.out.println("The string is: " + s);
System.out.println("Character at Index 1: " + charArr[1]);
System.out.println("Character at Index 4: " + charArr[4]);
System.out.println("Character at Index 5: " + charArr[5]);
}
}
Producción :
The string is: test string
Character at Index 1: e
Character at Index 4:
Character at Index 5: s
Podemos usar los métodos descritos en la sección anterior para convertir el carácter en una cadena.
public class Demo {
public static void main(String[] args) {
String s = "test string";
char[] charArr = s.toCharArray();
char characterAtIdx6 = charArr[6]; // character t
String str1 = Character.toString(characterAtIdx6); // char to string
String str2 = String.valueOf(characterAtIdx6); // char to string
String str3 = "" + characterAtIdx6; // char to string
System.out.println("Using toString()");
System.out.println("Length: " + str1.length() + " String: " + str1);
System.out.println("\nUsing valueOf()");
System.out.println("Length: " + str2.length() + " String: " + str2);
System.out.println("\nUsing empty string concatenation");
System.out.println("Length: " + str3.length() + " String: " + str3);
}
}
Producción :
Using toString()
Length: 1 String: t
Using valueOf()
Length: 1 String: t
Using empty string concatenation
Length: 1 String: t
Obtención de caracteres del plano multilingüe suplementario (SMP) de Unicode
En algunos casos raros, nuestra cadena puede contener caracteres que no están presentes en el plano multilingüe básico Unicode. Un ejemplo podría ser una serie de emojis o emoticonos. Estos caracteres forman parte del plano multilingüe suplementario (SMP) de Unicode.
Los enfoques anteriores no funcionan para estos personajes. Podemos usar el método codePointAt()
para obtener dichos caracteres de la cadena. Este método devuelve un número entero que representa el valor Unicode del carácter en ese índice. Asegúrese de tener instalada la fuente adecuada para ver estos caracteres.
public class Demo
{
public static void main(String[] args)
{
String s = "😀 the grinning emoji";
for(int i=0; i<s.length();)
{
int codePoint = s.codePointAt(i);
char[] charArr = Character.toChars(codePoint);//More than one characters may be required to represent an SMP char
System.out.print(new String(charArr) + " ");
i = i + Character.charCount(codePoint);//Increase i according to the number of chars required for that SMP char
}
}
}
Producción :
😀 t h e g r i n n i n g e m o j i
Si intentamos imprimir la misma cadena usando el método charAt()
, obtenemos el siguiente resultado.
public class Demo
{
public static void main(String args[])
{
String s = "😀 the grinning emoji";
for(int i=0; i<s.length(); i++)
{
char c = s.charAt(i);
System.out.print(c + " ");
}
}
}
Producción :
? ? t h e g r i n n i n g e m o j i
Resumen
Las cadenas, al igual que los arrays, siguen una indexación basada en cero. Podemos obtener caracteres individuales de la cadena usando el método charAt()
. También podemos convertir la cadena en un array de caracteres y luego buscar caracteres individuales usando sus índices. Si desea que el carácter individual sea una cadena y no un carácter, utilice el método Character.toString()
o String.valueOf()
para convertirlo. A veces, nuestra cadena puede contener caracteres fuera del plano multilingüe básico. En tales casos, podemos usar el método codePointAt()
en lugar del método charAt()
.