
package pruebasstring;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

public class PruebasString {

    public static void main(String[] args) {
        String cadenaCaracteres = "NO DEJES PARA MAÑANA LO QUE PUEDAS HACER HOY";
        System.out.println("la cadena a la que vamos a aplicar los métodos es :");
        System.out.println(cadenaCaracteres);
        System.out.println("la cadena tiene "+cadenaCaracteres.length()+" caracteres ");
        System.out.println("la subcadena que se ubica a partir de la posición 14 y que finaliza antes de la posición 20 es -->>"+cadenaCaracteres.substring(14, 20)+"<<--");
        System.out.println("la subcadena -->>PUEDAS<<-- se encuentra a partir de la posición: "+cadenaCaracteres.indexOf("PUEDAS"));
        for (int i=0; i<cadenaCaracteres.length(); i++)
            System.out.println("posición : "+i+"   carácter :"+cadenaCaracteres.charAt(i));

        //------------------------------------------------------------------------------------
   
        String cadena1 = new String("LEOPARDO");
        String cadena2 = new String("LEOPARDO");
        String cadena3 = new String("TIGRE");
        String cadena4 = cadena3;        
        
        if (cadena1.equals(cadena2))
            System.out.println("verificado con equals: el contenido de cadena1 y cadena2 es el mismo");
        
        if (cadena1.compareTo(cadena2) == 0)
            System.out.println("verificado con compareTo: el contenido de cadena1 y cadena2 es el mismo");    
        
        if (cadena1 == cadena2)
            System.out.println("las referencias cadena1 y cadena2 apuntan al mismo objeto");
        else
            System.out.println("las referencias cadena1 y cadena2 apuntan a objetos diferentes");
        
        if (cadena3 == cadena4)
            System.out.println("las referencias cadena3 y cadena4 apuntan al mismo objeto");
        else
            System.out.println("las referencias cadena3 y cadena4 apuntan a objetos diferentes");  
        
        //------------------------------------------------------------------------------------
        
        cadena1 = new String("LEOPARDO");
        cadena2 = new String("LEOPARDO");
        cadena3 = new String("LEON");
        cadena4 = new String("TIGRE");
          
        int valorDevueltoPorComparacion = cadena1.compareTo(cadena2);
        System.out.println("valor devuelto por la comparacion de "+cadena1+" y "+cadena2+"   : "+valorDevueltoPorComparacion);
        valorDevueltoPorComparacion = cadena1.compareTo(cadena3);
        System.out.println("valor devuelto por la comparacion de "+cadena1+" y "+cadena3+"   : "+valorDevueltoPorComparacion);        
        valorDevueltoPorComparacion = cadena1.compareTo(cadena4);
        System.out.println("valor devuelto por la comparacion de "+cadena1+" y "+cadena4+"   : "+valorDevueltoPorComparacion);
        
        //------------------------------------------------------------------------------------
        
        cadena1 = "HAZ BIEN ";
        cadena1 = cadena1 + "Y NO MIRES A QUIEN";
        System.out.println(cadena1);
        cadena2 = "SON LOBOS ";
        cadena2 = cadena2.concat("CON PIEL DE CORDERO");
        System.out.println(cadena2);

        //------------------------------------------------------------------------------------        
        
        StringBuffer refran = new StringBuffer();
        refran.append("MAS ");
        refran.append("VALE ");
        refran.append("PÁJARO ");
        refran.append("EN ");
        refran.append("MANO ");
        refran.append("QUE ");
        refran.append("CIENTO ");
        refran.append("VOLANDO");
        System.out.println(refran);
        String refranEncapsuladoEnString = new String(refran);
        System.out.println(refranEncapsuladoEnString);
        refran.insert(0, "Presentamos el refrán : ");
        System.out.println(refran);
        String refranConPresentacion = refran.toString();
        System.out.println(refranConPresentacion);       
        
        //------------------------------------------------------------------------------------        
        
        cadena1 =String.format("%-10s","hola");       
        cadena2 = String.format("%10s","hola");       
        System.out.println("--"+cadena1+"--");
        System.out.println("--"+cadena2+"--");

        //------------------------------------------------------------------------------------        
        
        int numFactura = 201800356;
        System.out.println("<<"+String.format("%015d", numFactura)+">>");
        System.out.println("<<"+String.format("%15d", numFactura)+">>");
        System.out.println("<<"+String.format("%-15d", numFactura)+">>");    
        
        //------------------------------------------------------------------------------------        

        double numero = 153.38;
        cadena1 = String.format("%8.0f", numero);
        System.out.println("<<"+cadena1+">>");
        cadena2 = String.format("%8.2f", numero);
        System.out.println("<<"+cadena2+">>");
        
        //------------------------------------------------------------------------------------        
    
        int numero1 = 15;
        int numero2 = 10034;
        int numero3= -8;
        String cadena = String.format("%1$05d   %2$10d   %3$10d", numero1, numero2, numero3);
        System.out.println(cadena);  

        //------------------------------------------------------------------------------------        
    
        DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
        DecimalFormat decimalFormat1 = new DecimalFormat("###,###,##0", decimalFormatSymbols);
        DecimalFormat decimalFormat2 = new DecimalFormat("##0", decimalFormatSymbols);
        DecimalFormat decimalFormat3 = new DecimalFormat("###,##0.00", decimalFormatSymbols);
        DecimalFormat decimalFormat4 = new DecimalFormat("###,###.00", decimalFormatSymbols);
        DecimalFormat decimalFormat5 = new DecimalFormat("###,###,##0.00", decimalFormatSymbols);       
        decimalFormatSymbols.setDecimalSeparator(',');
        decimalFormatSymbols.setGroupingSeparator('.');  
          
        int entero1 = 23045;
        int entero2 = 23;
        double real1 = 340.87;
        double real2 = -1250.68;
        double real3 = 0.39;
        double real4 = 12005956.78;
        System.out.println("--------------------   UTILIZACIÓN DecimalFormat   --------------------");
        System.out.println(decimalFormat1.format(entero1));
        System.out.println(decimalFormat2.format(entero2));
        System.out.println(decimalFormat3.format(real1)); 
        System.out.println(decimalFormat3.format(real2));
        System.out.println(decimalFormat3.format(real3));
        System.out.println(decimalFormat4.format(real3));
        System.out.println(decimalFormat5.format(real4));          
        System.out.println("----- UTILIZACIÓN COMBINADA String.format y DecimalFormat   -----------");
        System.out.println(String.format("%12s",decimalFormat1.format(entero1)));
        System.out.println(String.format("%12s",decimalFormat2.format(entero2)));
        System.out.println(String.format("%15s",decimalFormat3.format(real1))); 
        System.out.println(String.format("%15s",decimalFormat3.format(real2)));
        System.out.println(String.format("%15s",decimalFormat3.format(real3)));
        System.out.println(String.format("%15s",decimalFormat4.format(real3)));
        System.out.println(String.format("%15s",decimalFormat5.format(real4)));                  
    }  
}
