En este tutorial aprenderá a usar expresiones regulares en Java de manera práctica para contar elementos de una cadena, en particular:
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.
Podemos obtener la longitud de un texto con una llamada al método String.length como sigue:
int letras (String miTexto) {
return miTexto.length();
} 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();
} 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();
} 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();
} 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)
}) 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> 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:
Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma…
Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad.…
¿Entrevista de programación Java fullstack? No te preocupes, te tengo un compendio de preguntas de…
Te recomiendo algunos cursos de Udemy para mejorar tus softskills y así mejorar en tu…
Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual…
Aunque hay ofertas que nos parecen buenas, es mejor no apresurarse y conocer todas las…