lenguajes de programación

Expresiones regulares en Java: analizar un String

En este tutorial aprenderá a usar expresiones regulares en Java de manera práctica para contar elementos de una cadena, en particular:

  1. letras
  2. vocales
  3. consonantes
  4. espacios

Para los datos vamos a implementar un método para cada propiedad deseada y para ir más lejos vamos a crear una vista HTML para mostrar los resultados con la ayuda de Dukescript en menos de 30 minutos.

Longitud de cadena

Podemos obtener la longitud de un texto con una llamada al método  String.length como sigue:

int letras (String miTexto) {
  return miTexto.length();
}

Cuenta los espacios de una cadena

Para contar los espacios de una cadena usaremos una expresión Regular básica para identificar el carácter espacio en blanco. El carácter de espacio en blanco se puede representar como [ ] (observe el espacio entre los paréntesis).

int espacios (String miTexto) {
 return miTexto.length()-miTexto.replaceAll("[ ]","").length();
}

Contar las vocales de una cadena

Para contar las vocales estamos usando una RegEx con cada una de las vocales.

int vocales (String miTexto) {
 return miTexto.length()-miTexto.replaceAll("[aeiouAEIOU]","").length();
}

Contar las consonantes de una cadena

Para contar las consonantes seleccionamos todas las letras que no están presentes en la regex de vocales.

int consonantes (String miTexto) {
  return miTexto.length()-miTexto.replaceAll("[b-df-hj-np-tv-zB-DF-HJ-NP-TV-Z]","").length();
}

Diseño del modelo de datos

Como podemos detectar que necesitamos para el modelo de datos una variable de tipo cadena llamada miTexto, para mantener el texto a analizar.

class StringStatistics {
 String miTexto;
 public StringStatistics(miTexto) {
  this.miTexto=miTexto;
 }
}

Convirtiéndo este código a la manera de generarlo de dukescript obtendremos

@Model (className = "StringStatistics", properties = {
 @Property (name= "miTexto", type=String.class)
})

Diseño de la vista

A continuación vamos a crear un HTML para la vista como este:

<textarea placeholder="Escriba un texto para analizarlo..."></textarea>
 
<p>
La cadena <pre></pre> tiene
<ul>
 <li></li>
 <li></li>
 <li></li>
 <li></li>
</ul>

A continuación vamos a añadir los enlaces de golpe de gracia y nuestro código HTML final se convierte como siguiente

<textarea
  data-bind="value: miTexto, valueUpdate: 'afterkeydown'"
  placeholder="Escriba un texto para analizar...">
</textarea>
<p>
La cadena <pre data-bind="text: miTexto"></pre> tiene
<ul>
    <li data-bind="text: letras()+' letras.'"></li>
   <li data-bind="text: vocales()+' vocales.'"></li>
    <li data-bind="text: consonantes()+' consonantes.'"></li>
    <li data-bind="text: espacios()+' espacios.'"></li>
 </ul>
<br>

Migrar el código Java para Dukescript

Nuestro código final para contar elementos de una cadena en Java será:

package dew.demo.string;

import net.java.html.json.Model;
import net.java.html.json.ComputedProperty;
import net.java.html.json.Property;

@Model (className = "StringStatistics", properties = {
@Property (name = "miTexto", type=String.class)
})
class PrimeDemo {

@ComputedProperty static int letras (String miTexto) {
return miTexto.length();
}

@ComputedProperty static int vocales (String miTexto) {
return miTexto.length()-miTexto.replaceAll("[aeiouAEIOU]","").length();
}

@ComputedProperty static int consonantes (String miTexto) {
return miTexto.length()-miTexto.replaceAll("[b-df-hj-np-tv-zB-DF-HJ-NP-TV-Z]","").length();
}

@ComputedProperty static int espacios (String miTexto) {
return miTexto.length()-miTexto.replaceAll("[ ]","").length();
}

static {
    new StringStatistics("").applyBindings();
  }
}

Puedes hallar la demostración en el siguiente enlace:

http://dew.apidesign.org/dew/#af7fb60e3bb2a63559ae

javatlacati

Compartir
Publicado por
javatlacati
Etiquetas: javaRegExp

Entradas recientes

Cursos de LinkedIn Learning

Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma…

1 mes hace

Mockito: Snippets de código

Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad.…

2 meses hace

Preguntas para entrevista de programación Java full-stack

¿Entrevista de programación Java fullstack? No te preocupes, te tengo un compendio de preguntas de…

3 meses hace

SoftSkills: cursos de Udemy

Te recomiendo algunos cursos de Udemy para mejorar tus softskills y así mejorar en tu…

3 meses hace

Cursos de Código Facilito

Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual…

3 meses hace

Precios de suscripción anual plataformas de cursos TI 2025-2026

Aunque hay ofertas que nos parecen buenas, es mejor no apresurarse y conocer todas las…

9 meses hace