Botón para abrir el Menú Botón para cerrar el Menú
Logo da empresa Alura
Iniciar Sesión Nuestros Planes
Formaciones Conoce a Luri
  • Programación _
  • Front End _
  • Data Science _
  • DevOps _
  • Innovación y Gestión _
Artículos de Tecnología > Programación

Tomando partes de texto en Java

Alex Felipe
Alex Felipe
22/10/2020

Compartir

Me estoy preparando para la certificación de Oracle y tuve que lidiar con la siguiente situación:

¿Cómo tomar una parte de una String? Revisemos la clase Libro:

public class Libro {
private final String nombre; 
private final String autor;
private final String descripcion;
public Libro(String nombre, String autor, String descripcion) { 
this.nome = nombre; 
this.autor = autor;
this.descricao = descripcion; 
}
public String getNome() { return nombre; }
public String getAutor() { return autor; }
public String getDescricao() { return descripcion; }
}

Agregar un libro nuevo:

String nombre = "Java EE"; 
String autor = "Alberto Souza"; 
String descripción = "La especificación Java EE y sus respectivas " + "implementaciones vienen evolucionando a lo largo del tiempo. " + "La configuración y utilización de las especificaciones " + "están mucho más fáciles. Lo que aún no es " + "tan fácil de ver es cómo las podemos llevar a cabo" + "para que trabajen en conjunto. ¿Cuáles debo usar " + "en mi próximo proyecto? ¿Qué realmente puedo " + "hacer con cada una de ellas? ¿Cómo hacer con que una " + "converse con la otra?";
Livro libro = new Livro(nombre, autor, descripción);

¿Y esta descripción gigantesca? Imprimamos el libro y veamos qué pasa:

nombre: Java EE autor: Alberto Souza descripción: La especificación Java EE y sus respectivas implementaciones vienen evolucionando a lo largo del tiempo.
La configuración y utilización de las especificaciones quedaron mucho más fáciles. Lo que aún no es tan fácil de ver es como las podemos llevar a cabo para que trabajen en conjunto.
¿Cuáles debo usar en mi próximo proyecto? ¿Qué realmente puedo hacer con cada una de ellas? ¿Cómo hacer con que una converse con la otra?

Si solo un libro ocupa todo ese espacio, ¡imagínate una lista con varios! No será genial... ¿Qué tal, en el momento de la impresión, si** tomamos solo los primeros 30 caracteres?** Podemos hacer esto usando el método substring() de la clase String. Y entonces suscribamos el método toString() de la clase Libro:

@Override 
public String toString() { 
    if (descripcion.length() > 30) {
return "nombre: " + nombre + "\\nautor: " + autor + "\\ndescripcion: " + descripcion.substring(0, 30) + "..."; }
return "nombre: " + nombre + "\\nautor: " + autor + "\\ndescripcion: " + descripcion; }

Imprimiendo el libro de nuevo:

 nombre: Autor de Java EE: Descripción de Alberto Souza: La especificación Java EE y sus…

¡Muy bien! Pero, ¿qué significan los parámetros 0 y 30? El método substring() tiene la siguiente firma: substring(int beginIndex, int endIndex). El índice inicial comienza en 0, así que pongo 0 como primer parámetro, pero ¿qué pasa con el segundo parámetro? ¿Anda a la casa 30? Veamos:

¡Como podemos ver, el índice final no es incluido! Esta es una de las precauciones que debemos tomar... Además del índice inicial y final, el método substring() también recibe solo el índice inicial:

return "nombre: " + nombre + "\\nautor: " + autor + "\\ndescripcion: " + descripcion.substring(30);

Imprimiendo el libro de nuevo:

nombre: Java EE autor: Alberto Souza 
descripción: respectivas implementaciones vienen evolucionando a lo largo del tiempo. La configuración y utilización de las especificaciones quedaron mucho más fáciles. Lo que aún no es tan fácil de ver es cómo las podemos llevar a cabo para que trabajen en conjunto. ¿Cuáles debo usar en mi próximo proyecto? ¿Qué realmente puedo hacer con cada una de ellas? ¿Cómo hacer con que una converse con la otra?...

He ¿¿qué pasó?? Cómo podemos ver, falta una parte de la descripción, es decir, cuando usamos el substring() con un solo parámetro, informamos que queremos que se lleve la parte de la String desde el índice informado, es decir, desde el índice 30 hasta el final.

Genial, vimos que el substring() tiene la capacidad de recoger una parte de la String según el índice, pero ¿por qué debería empezar siempre con 0? Vamos a suponer que necesitamos hacer una paginación tomando los siguientes 30 caracteres de un texto y que ahora el índice inicial comienza con 1 y se incluye el índice final:

String page1 = texto.substring(1, 30); ...

Aparentemente ha mejorado, pero veamos la segunda página:

String page2 = texto.substring(31, 60); ...

¿Y entonces? ¿Tomará 30 o 29 caracteres? Ahora verifiquemos con el estándar actual:

String page1 = texto.substring(0, 30); 
String page2 = texto.substring(30, 60);

Tenga en cuenta que es mucho más natural comprender que los siguientes 30 caracteres se devolverán en cada página. Debido a esta situación, se adoptó el valor predeterminado de comenzar en 0 y ¡no incluir el último índice!

En Alura tenemos toda una formación con varios cursos de Java, desde lo más básico con el lenguaje hasta conceptos más avanzados como clases, poliformismo y herencia. Pero no te asustes con esos términos, ellos son abordados con un proyecto práctico que junto con nuestra metodología y didáctica hacen que el contenido sea mucho más fácil de ser aprendido.

Alex Felipe
Alex Felipe

Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Atualmente cria conteúdo no canal https://www.youtube.com/@AlexFelipeDev.

Artículo Anterior
La carrera de programador: ¿qué curso tomar primero?
Siguiente Artículo
Intercambiando caracteres de una String en Java

Ver otros artículos sobre Programación

Navegación

  • Planes
  • Instructores
  • Blog
  • Política de privacidad
  • Términos de uso
  • Sobre nosotros
  • Preguntas frecuentes

¡CONTÁCTANOS!

  • ¡Quiero entrar en contacto!

Blog

  • Programación
  • Data Science
  • Front End
  • Innovación y Gestión
  • DevOps

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

NOVEDADES Y LANZAMIENTOS

Aliados

  • Programa de aceleração Scale-Up Endeavor
  • En Alura somos unas de las Scale-Ups seleccionadas por Endeavor, programa de aceleración de las empresas que más crecen en el país.
  • Growth Academy 2021 do Google For Startups
  • Fuimos unas de las 7 startups seleccionadas por Google For Startups en participar del programa Growth Academy en 2021
Alura

Una empresa del grupo Alun

Logo do grupo Alun

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

Cursos

Cursos de Programación
Lógica de Programación | Java
Cursos de Front End
HTML y CSS | JavaScript | React
Cursos de Data Science
Data Science | Machine Learning | Excel | Base de Datos | Data Visualization | Estadística
Cursos de DevOps
Docker | Linux
Cursos de Innovación y Gestión
Transformación Ágil | Marketing Analytics

Alura

  • Educação em Tecnologia

    • logo fiap FIAP
    • logo casa do codigo Casa do Código
    • logo pm3 PM3 - Cursos de Produto
  • Mais Alura

    • logo alura start START BY Alura
    • logo alura lingua Alura Língua
    • logo alura para empresas Alura Para Empresas
    • logo alura latam Alura LATAM
  • Comunidade

    • logo tech guide Tech Guide
    • logo 7 days of code 7 days of code
    • logo Hipsters ponto Jobs Hipsters ponto Jobs
  • Podcasts

    • logo Hipster Network Hipster Network
    • logo Hipsters ponto Tech Hipsters ponto Tech
    • logo Dev sem fronteiras Dev sem Fronteiras
    • logo Like a Boss Like a Boss
    • logo IA Sob Controle IA Sob Controle
    • logo Mesa de Produto Mesa de Produto
    • logo Decode Decode
    • logo FIAPCast FIAPCast