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

Seleccionar partes de un texto en Java

Alex Felipe
Alex Felipe
11/09/2022

Compartir

img.portada

Estoy preparandome para la certificación de Oracle y tuve que lidiar con la siguiente situación:

¿Cómo tomar una parte de una String? Vamos a comprobar 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.nombre= nombre;
		this.autor = autor;		
		this.descripcion = descripcion;	
	}	
	public String getnombre() { return nombre; }
	public String getAutor() { return autor; }
	public String getdescripcion() { return descripcion; }
}

Añadiendo un nuevo libro:

String nombre = "Java EE";
String autor = "Alberto Souza";
String descripcion = "La especificación Java EE y sus respectivas " + "implementaciones han evolucionado con el tiempo. " + "La configuración y el uso de las especificaciones " + "son mucho más fáciles. Lo que todavía no es " + "tan fácil de ver es cómo podemos ponerlas " + "a trabajar juntas. ¿Cuáles debo usar " + "en mi próximo proyecto? ¿Qué puedo hacer realmente " + "con cada una de ellas? ¿Cómo hacer que una " + "hable con la otra?";Libro libro = new Libro(nombre, autor, descripcion);

¿Y esa descripción súper grande? Vamos a imprimir el libro y ver qué pasa:

nombre: Java EE autor: Alberto Souza descripción: La especificación Java EE y sus respectivas han evolucionado con el tiempo. La configuración y el uso de las especificaciones son mucho más fáciles. Lo que todavía no es tan fácil de ver es cómo podemos ponerlas a trabajar juntas. ¿Cuáles debo usar en mi próximo proyecto? ¿Qué puedo hacer realmente con cada una de ellas? ¿Cómo hacer que una hable con la otra?

¡Si solo un libro ya está ocupando todo ese espacio imagina una lista con varios! No va a ser nada bueno... ¿Qué tal, en el momento de la impresión, tomar solo los primeros 30 caracteres? Es posible hacer esto utilizando el método substring() de la clase String. Así que vamos a sobrescribir el método toString() de la clase Libro:

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

Imprimiendo nuevamente el libro:

nombre : Java EE autor: Alberto Souza descripcion: La especificación Java EE y su...

¡Muy bueno! ¿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 empieza en 0, así que puse el 0 como primer parámetro, pero ¿y el segundo parámetro? ¿Vas a la casa 30? Veamos:

img1

¡Cómo podemos ver el índice final no es incluido! Ese es uno de los cuidados que necesitamos tener... 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 nuevamente el libro:

nombre : Java EE autor: Alberto Souza
descripcion: respectivas han evolucionado con el tiempo. La configuración y el uso de las especificaciones son mucho más fáciles. Lo que todavía no es tan fácil de ver es cómo podemos ponerlas a trabajar juntas. ¿Cuáles debo usar en mi próximo proyecto? ¿Qué puedo hacer realmente con cada una de ellas? ¿Cómo hacer que una hable con la otra? ...

Pero, ¿qué ha pasado? Como pueden ver, falta una parte de la descripción, es decir, cuando utilizamos el substring() con un solo parámetro, informamos que queremos parte de la String a partir del índice informado, o sea, desde el índice 30 hasta el final.

Genial, vimos que el substring() tiene la capacidad de tomar un pedazo de la String según el índice, pero ¿por qué debo comenzar siempre por 0? Supongamos que necesitamos hacer una paginación tomando los 30 siguientes caracteres de un texto y que ahora el índice comience por el 1 y el índice final es incluido:

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

Al principio mejoró, pero mira la segunda página:

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

¿Qué pasa? ¿Va a tomar 30 o 29 caracteres? Ahora vamos a verificarlo con el patrón actual:

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

Ten en cuenta que es mucho más natural entender que se devolverán los siguientes 30 caracteres en cada una de las páginas. ¡Debido a esta situación el estándar de comenzar por 0 y no incluir el último índice fue adoptado!

Img-autor

Alex Felipe Victor Vieira

Es instructor y desarrollador, posee experiencia en Java, Kotlin, Android. Creador de más de 40 cursos, como Kotlin, Flutter, Android, persistencia de datos, comunicación con Web API, personalización de pantallas, tests automatizados, arquitectura de Apps y Firebase. Es experto en Programación Orientada a Objetos, siempre enfocado en compartir las buenas prácticas y tendencias del mercado de desarrollo de software. Trabajó 2 años como editor de contenido en el blog de Alura y hoy en día, aún escribe artículos técnicos.

Traducido por: Adriana Oliveira

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
Como hacer un import static en java
Siguiente Artículo
CMD: Sugerencias para trabajar en el prompt de Windows

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