fbpx

Substring en Java

Como ya sabemos, en java un String es un conjunto de caracteres, pero como todo conjunto puede tener subconjuntos de la misma cadena. Aquí es donde entra en juego el método subString de la clase java String.

Substring en Java

El método subString fue introducido en el JDK desde la versión JDK1.0 y la clase java.lang.String hereda directamente de la clase base java.lang.Object

Métodos subString de la clase String

Como podemos ver La clase String tiene sobrecargado el método subString con dos variantes de parámetros.

  1. public String substring(int beginIndex): Este método regresa una subcadena de caracteres de la cadena principal. El parámetro beginIndex indica el inicio desde donde se comenzará la subcadena, este parámetro es de tipo entero y es obligatorio.
  2. public String substring(int beginIndex, int endIndex): Este segundo método al igual que el primero regresa una subcadena de la cadena principal, con la diferencia de que este método tiene dos parámetros. beginIndex indica el carácter de inicio de la cadena y es un parámetro obligatorio.endIndex indica la posición del carácter final de la cadena, este parámetro es opcional y para obtener la posición final del subString se hace la siguiente operación:(endIndex – 1)

Nota: Para trabajar con subString en java podemos apoyarnos del método String.length(), este método es muy útil para saber la longitud de un String y así poder calcular las cadenas.

También vemos que el método sobrecargado subString regresa un objeto de tipo String y es un método público, esto significa que desde cualquier clase se pueden crear instancias de la clase String de java.

Ejemplos de substring(int beginIndex)

"STRING".substring(2) retorna el valor "RING"
"SUBSTRING".substring(3) retorna el valor "STRING"
"EN JAVA".substring(4) retorna el valor "AVA"

Ejemplos de substring(int beginIndex, int endIndex)

Hay que recordar que al parámetro endIndex hay que restarle un 1 para obtener la posición final de la cadena.

"Java SubString".substring(5, 8) returns "Sub"
"String.subString".substring(1, 6) returns "tring"

Ejemplo completo de Java SubString

package cursojava;

public class SubStringMain {
    
    public static void main(String []args){
        
        String cadena = "EL MAR ES AZUL Y EL CIELO TAMBIEN";
        
        int longitud = cadena.length();
        
        System.out.println("Ejemplo de SubString en Java 1 = " + cadena.substring(5));
        System.out.println("Ejemplo de SubString en Java 2 = " + cadena.substring(9));
        System.out.println("Ejemplo de SubString en Java 3 = " + cadena.substring(12));
        System.out.println("Ejemplo de SubString en Java 4 =  " + cadena.substring(1, 10));
        System.out.println("Ejemplo de SubString en Java 5 = " + cadena.substring(5, 20));
        
    }
}

Salida del programa

Ejemplo de SubString en Java 1 = R ES AZUL Y EL CIELO TAMBIEN
Ejemplo de SubString en Java 2 =  AZUL Y EL CIELO TAMBIEN
Ejemplo de SubString en Java 3 = UL Y EL CIELO TAMBIEN
Ejemplo de SubString en Java 4 =  L MAR ES 
Ejemplo de SubString en Java 5 = R ES AZUL Y EL

Excepciones

Cuando usamos el metro substring() de la clase String puede existir algún error en el momento de trabajar con cadenas de caracteres, esto pasa mas a menudo en tiempo de ejecución, ya que por lo regular las cadenas se van almacenado en variables.

La excepción o error que se detona al trabajar con substring es IndexOutOfBoundsException, esta excepción trabaja de forma similar para los dos métodos sobrecargados de substring().

  1. public String substring(int beginIndex) Si el parametro beginIndex es negativo o mayor que la longitud de la cadena se lanza la excepcion IndexOutOfBoundsException.
  2. public String substring(int beginIndex, int endIndex) Si beginIndex es negativo, o endIndex es mayor que la longitud de la cadena, o beginIndex es mayor que endIndex.

En definitiva, si queremos cortar la cadena desde una posición incorrecta o que no existe dentro de la longitud de la cadena, se lanzará un error de tipo IndexOutOfBoundsException.

Ejemplo sin control de excepciones

Como vemos en este ejemplo, estamos tratando de cortar una cadena desde la posición -1, esto no se puede hacer y por lo tanto nos esta mandando un error.

package cursojava;

public class SubStringMain {
    
    public static void main(String []args){
        
        String cadena = "EL MAR ES AZUL Y EL CIELO TAMBIEN";
        System.out.println("Ejemplo de SubString en Java 1 = " + cadena.substring(-1));
                
    }
}

Salida del ejemplo

Esta es la consecuencia de no cortar de forma adecuada una cadena, esto puede hacer que un programa termine de forma incorrecta, para solucionarlo tenemos que realizar ciertas validaciones y controlar la excepción.

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
   at java.lang.String.substring(String.java:1927)
   at cursojava.SubStringMain.main(SubStringMain.java:11)
C:\Users\Mario\AppData\Local\NetBeans\Cache.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)

Ejemplo con control de excepciones

En este caso estamos controlando el error usando un try catch.

package cursojava;

public class SubStringMain {
    
    public static void main(String []args){
        
        String cadena = "EL MAR ES AZUL Y EL CIELO TAMBIEN";
        
        try{
           System.out.println("Ejemplo de SubString en Java 1 = " + cadena.substring(-1));
        }catch(java.lang.StringIndexOutOfBoundsException ex){
            System.out.println("Ocurrio un error:(Indice fuera de rango): " + ex);
        }
        
        System.out.println("Continua la ejecucion del programa...");
                
    }
}

Resultado de la ejecución

Si controlamos el error, podemos continuar trabajando con el programa de forma normal.

Ocurrio un error:(Indice fuera de rango): java.lang.StringIndexOutOfBoundsException: String index out of range: -1
Continua la ejecucion del programa...

Conclusión

Como puedes ver, el uso del método subString de la clase String es fácil y es muy útil para la extracción de subcadenas de caracteres. En este curso de java aprenderás mucho mas.

Puedes hacer extracción de cadenas para después pasarlo a un switch o un if para realizar condicionales, esto es muy común en java.

Espero que este articulo te sea de utilidad, si necesitas saber algo más sobre este método deja tu comentario.

Estaremos encantados de escuchar lo que piensas

Deje una respuesta

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
El inicio de sesión/registro está temporalmente inhabilitado