Java - FICHEROS JAVA

 
Vista:
Imágen de perfil de Richard
Val: 12
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

FICHEROS JAVA

Publicado por Richard (6 intervenciones) el 28/01/2021 15:48:54
Hola a todos, Agradeceria si alguien me pueda orientar de como cambiar las vocales minusculas a mayusculas de un fichero, lo que logre hacer este es mi avance es que convierta todo el fichero en mayusculas alguien sabe como puedo leer y reemplazar SOLO minusculas vocales a mayusculas ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.FileWriter;
 
public class Ut2 {
    public static void main(String[] args) {
        if (args.length < 1) {
            System.out.println("No hay argumentos");
            return;
        }
 
        File file = new File(args[0]);
        if (file.exists()) {
            System.out.println("El fichero existe");
        } else {
            System.out.println("El fichero no existe");
            return;
        }
 
        new ThreadMostrarFichero(file).start();
    }
}
 
 
class ThreadMostrarFichero extends Thread {
 
    File file;
 
    public ThreadMostrarFichero(File file) {
        super();
        this.file = file;
    }
 
    @Override
    public void run() {
        System.out.println("Contenido del fichero cambiando las mayusculas por minusculas y viceversa:");
        leerFicheroCambiarMayuscula();
    }
 
    private void leerFicheroCambiarMayuscula() {
        char caracter;
        try (FileReader fileReader = new FileReader(file)) {
            do {
                caracter = (char) fileReader.read();
                if(caracter == 65535){
                    return;
                }
                if(caracter == ' '){
                    System.out.print(caracter);
                    continue;
                }
                if(caracter < 'a')  {
                    System.out.print((char)(caracter + ('a' - 'A')));
                }else{
                    System.out.print((char)(caracter - ('a' - 'A')));
                }
            } while (true);
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

FICHEROS JAVA

Publicado por Kabuto (1381 intervenciones) el 29/01/2021 00:30:26
Hola.
Si te fijas en la tabla de caracteres ASCII verás que el código de las letras minúsculas va del 97 ('a') hasta el 122 ('z').

Y si te fijas en las mayúsculas, verás que su código va del 65 ('A') al 90 ('Z')

Bien, pues si nos fijamos un poco más, veremos que entre cada letra minúscula y su equivalente mayúscula, hay una diferencia numérica de 32.

Es decir, que si al código de 'a' que es 97, le resto 32 --> 97 - 32 = 65
Obtengo el valor 65, que corresponde a la 'A'

O sea, que he conseguido convertir la letra 'a' en 'A' , cogiendo su valor ASCII y restándole 32.

Genial, pero, ¿cómo accedo al valor ASCII de un carácter en Java?
Pues no hay que hacer nada especial, un char en realidad es un entero, así que nos va a bastar tratarlo como tal.

Aquí un código de ejemplo de como detectar si un char es letra minúscula y convertirla a mayúscula, simplemente restándole 32.

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
    char caracter = 'h';
 
    if (caracter >= 97 && caracter <= 122) {
        System.out.println("Es una letra minúscula.");
        System.out.print("Convertimos a mayúscula: ");
        caracter -= 32;
        System.out.println(caracter);
    }
 
}

Aplica esto en tu código y listo.

Fíjate que en este ejemplo no se contempla la letra 'ñ', porque al ser un carácter ajeno al alfabeto anglosajón, no forma parte del ASCII normal, si no que está en la tabla de ASCII extendido.
Tú mismo puedes ver en el enlace que he puesto al principio cuáles son sus códigos para mayúscula y minúscula. Para tener en cuenta esta letra, habrá que añadir un segundo if específico para detectarla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

FICHEROS JAVA

Publicado por Rodrigo (623 intervenciones) el 29/01/2021 01:10:46
Saber la distancia entre minusculas y mayusculas y los valores ASCII especificos de las letras no es necesario.
Podemos abusar del compilador, porque este si se los sabe.

Modifico el codigo entregado amablemente antes para evitar los numeros explicitos asi:

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
     char caracter = 'r';
 
     if (caracter >= 'a' && caracter <= 'z') {
         System.out.println("Es una letra minúscula.");
         System.out.print("Convertimos a mayúscula: ");
         caracter -= ('a'-'A');
         System.out.println(caracter);
     }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Richard
Val: 12
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

FICHEROS JAVA

Publicado por Richard (6 intervenciones) el 29/01/2021 03:00:32
Gracias por no solo el codigo sino la explicacion!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar