Expresiones Regulares en Java
Expresiones Regulares en Java
Expresiones Regulares en Java
Cabos
// ESTADISTICAS2............................................... 8
// Validadores .................................................... 16
// Borra comentarios código
package com.company;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Esta clase lee un archivo de código Java, le quita los
comentarios y
* escribe el resultado en otro archivo del mismo tipo, aunque
tiene un *pequeño detalle, borra una pequeña parte de nuestro
código al *momento de eliminar los comentarios.
*/
public class BorraComentarios {
String nomArchivoEntrada;
String nomArchivoSalida;
/**
* Este constructor inicializa los atributos de la clase e invoca a
los
* metodos que abren el archivo fuente, borran los comentarios
y
* escriben el resultado en otro archivo.
*/
public BorraComentarios(String nomArchivoEntrada,
String nomArchivoSalida) {
String fuenteCC, fuenteSC; this.nomArchivoEntrada =
nomArchivoEntrada;
this.nomArchivoSalida = nomArchivoSalida;
// Lee el archivo con el codigo fuente
fuenteCC = leeArchivo();
// Borra los comentarios
fuenteSC = borraComentarios(fuenteCC);
// Escribe los resultados en un archivo texto
escribeArchivo(fuenteSC);
}
/**
* Este metodo abre el archivo con el codigo fuente, lo lee linea
por
* linea, las guarda en una cadena de tipo String.
* regresa una cadena con el contenido del archivo de entrada
*/
public String leeArchivo() {
FileReader fileReader;
BufferedReader bufferedReader;
String linea;
StringBuffer fuente = new StringBuffer();
}
// Se envuelve el archivo donde se escribiran los resultados con
un
// archivo del tipo BufferedWriter para eficientar su acceso
bufferedWriter = new BufferedWriter(
(OutputStreamWriter) (fileWriter));
try {
bufferedWriter.write(fuenteSC); bufferedWriter.close();
fileWriter.close();
} catch (IOException ioe) {
System.out.println("Error al escribir al archivo"
+ nomArchivoSalida);
}
}
/**
* Este metodo borra los comentarios de línea, multilínea y de
* documentación de archivos con código Java.
* Falla si una cadena literal contiene dos diagonales seguidas
*/
public String borraComentarios(String fuenteCC) {
// Crea una expresión regular que elimine los comentarios
String exReg = "(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*$)"; //
Compila la expression regular en un patron
Pattern p = Pattern.compile(exReg, Pattern.MULTILINE);
// Crea un ajustador para el texto del archivo
Matcher m = p.matcher(fuenteCC); // Reemplaza los
comentarios por una cadena vacia
return m.replaceAll("");
}
}
// ESTADISTICAS2
package com.company;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
FileReader fileReader;
try {
fileReader = new FileReader(this.nomArchivoEntrada);
} catch (FileNotFoundException var5) {
System.out.println("Error: No existe el archivo " +
this.nomArchivoEntrada);
return null;
}
try {
while(true) {
String linea = bufferedReader.readLine();
if (linea == null) {
bufferedReader.close();
fileReader.close();
return fuente.toString();
}
fuente.append(linea);
fuente.append("\n");
}
} catch (IOException var6) {
System.out.println("Error al procesar el archivo" +
this.nomArchivoEntrada);
return null;
}
}
try {
fileWriter = new FileWriter(this.nomArchivoSalida);
} catch (IOException var6) {
System.out.println("Error, no se pudo crear el archivo" +
this.nomArchivoSalida);
return;
}
BufferedWriter bufferedWriter = new
BufferedWriter(fileWriter);
try {
bufferedWriter.write("Frecuencia de las palabras
reservadas");
bufferedWriter.newLine();
bufferedWriter.write("en la clase: " +
this.nomArchivoEntrada);
bufferedWriter.newLine();
bufferedWriter.newLine();
Iterator var4 = cuentaPalabras.entrySet().iterator();
while(var4.hasNext()) {
Entry<String, Integer> palabra = (Entry)var4.next();
String var10001 = (String)palabra.getKey();
bufferedWriter.write(var10001 + ": " +
palabra.getValue());
bufferedWriter.newLine();
}
bufferedWriter.close();
fileWriter.close();
} catch (IOException var7) {
System.out.println("Error al cerrar el archivo" +
this.nomArchivoSalida);
}
}
while(m.find()) {
String palabra = m.group();
if (!cuentaPalabras.containsKey(palabra)) {
cuentaPalabras.put(palabra, 1);
} else {
int n = (Integer)cuentaPalabras.get(palabra);
cuentaPalabras.put(palabra, n + 1);
}
}
return cuentaPalabras;
}
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.company;
package com.company;
/*
* ValidadoresTest.java
*/
import org.junit.AfterClass;
import static org.junit.Assert.*;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Esta es la clase de prueba de la clase Validadores.java
*
*
*/
public class ValidadoresTest {
public ValidadoresTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
/**
* Prueba unitaria del metodo cadenaVacia de la clase
Validadores.
*/
@Test
public void testCadenaVacia() {
Validadores instance = new Validadores();
boolean result;
String s;
s = "ABCD0123";
result = instance.validaClave(s);
assertFalse(result);
// Prueba si rechaza una clave con menos caracteres
s = "AB0123";
result = instance.validaClave(s);
assertFalse(result);
// Prueba si rechaza una clave con mas digitos
s = "ABC01234";
result = instance.validaClave(s);
assertFalse(result);
// Prueba si rechaza una clave con menos digitos
s = "ABC012";
result = instance.validaClave(s);
assertFalse(result);
}
/**
* Prueba unitaria del metodo validaEntero de la clase
Validadores.
*/
@Test
public void testValidaEntero() {
Validadores instance = new Validadores();
boolean result;
String s;
System.out.println("Prueba unitaria del metodo
validaEntero");
// Prueba si acepta un entero valido
s = "1234";
result = instance.validaEntero(s);
assertTrue(result);
min = 10;
max = 100;
// Prueba si acepta un entero con rango valido
s = "50";
result = instance.validaEnteroRango(min, max, s);
assertTrue(result);