Entrada destacada

Como usar enums en Android, kotlin

Método para buscar un carácter en un arreglo en Java

Otra función con cadenas de caracteres que podemos realizar en java es buscar una letra o carácter en un String. Para hacer esto existen funciones que ya vienen con la clase String y que podemos usar pero en este ejercicio pretendemos mostrar como hacerlo utilizando sentencias de control (if, for, ...) y así recorrer el String carácter carácter.

Primero tenemos que convertir la cadena en un arreglo de caracteres, esto lo podemos hacer utilizando toCharArray() o charAt(), veamos ambos casos.

El caso de toCharArray es sencillo solo debe aplicarse al String que queremos pasar a un arreglo tipo char.
char caracteres[] = texto.toCharArray();

Para el caso de charAt es un tanto diferente, primero creamos el arreglo tipo char el cual tendrá el tamaño en caracteres que tiene la cadena después recorremos con un for cada posición de la cadena de caracteres con charAt, el cual nos obtiene el caracter de la posición indicada, e introducimos el caracter el arreglo.
char caracteres[] = new char[texto.length()];
for(int i = 0; i < texto.length(); i++){
    caracteres[i] = texto.charAt(i);
}

Ahora ya podremos comparar carácter a carácter para determinar si lo que buscamos esta en la cadena, el siguiente ejemplo solo determina si el carácter se encuentra en el texto o no.

boolean encontro = false;
for(char c : pajar){
    if(c == aguja){
        encontro = true;
        break;
    }
}

Si lo requerido es saber en que posición se encuentra el carácter buscado puede hacerse de la siguiente forma.
/**
 * Buscar un caracter en un arreglo, devuelve posision
 * @param aguja char a buscar
 * @param pajar array char 
 * @param posicionInicial intero posicion de inicio de busqueda
 * @return 
 */
public int charPosEnArray(char aguja, char [] pajar, int posicionInicial){
    if( aguja != 0 && pajar.length > 0){
        int encontro = -1;
        for(int i = posicionInicial; i < pajar.length; i++){
            if(pajar[i] == aguja){
               encontro = i;
               break;
            }
        }
        return  encontro;
    }else{
        return -1;
    }
}
En la función anterior se determina la posición de un carácter, si es que se encuentra, solo la primer coincidencia pero puede utilizarse para determinar todas las posiciones de las coincidencias si se utiliza la función varias veces en cada caso que se utilice se pone como posición inicial la ultima posición encontrada, obviamente la primer vez que se use el valor inicial seria 0.

Comentarios

  1. Y en el caso de usar el .toCharArray? se utiliza igual el for?

    ResponderEliminar
    Respuestas
    1. Para obtener el arreglo de caracteres no, ya que toCharArray() ya devuelve un arreglo de caracteres.

      Eliminar

Publicar un comentario