Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Java: Lettere accentate

    Ciao a tutti,
    ho la necessità in un flusso di informazioni di cambiare le lettere accentate con le lettere normali.
    Ho creato il seguente metodo per porre una soluzione veloce.
    codice:
    public static String FindAndSubstitution(String word){
        String wordChanged=word;
        wordChanged=wordChanged.replace('Ç', 'C');
        wordChanged=wordChanged.replace('ü', 'u');
        wordChanged=wordChanged.replace('é', 'e');
        wordChanged=wordChanged.replace('â', 'a');
        wordChanged=wordChanged.replace('ä', 'a');
            .....
            .....
        wordChanged=wordChanged.replace('Ñ', 'N');
        return wordChanged;
    }
    Mi rendo conto che non è il metodo più veloce e nel caso mi dimentico un carattere verrà e immesso nel flusso di informazioni e questa mi ritornerà un errore.
    C'è un metodo più veloce per poter fare questa cosa?

    Grazie mille.
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    no, la questione si risolve in altro modo (che adesso sembra più complesso).
    Il principio è

    testoIniziale --> testoDaMeTrattato --> testoInviato --> testoRistabilito

    ora testoIniziale DEVE ESSERE UGUALE a testoRistabilito

    in questo modo non è assicurata questa condizione.
    Per il trattamento dei testi in genere bisogna fissare una codepage e trattare tutti i testi secondo quella codepage.
    In dettaglio, tu questi dati li tratti o ti limiti ad inviarli da un punto all'altro? puoi averne i byte?
    RTFM Read That F*** Manual!!!

  3. #3
    Non mi interessa il testo ristabilito.
    Devo solo trattarlo, non mi interessa il formato ristabilito.

    Effettivamente questi dati mi vengono da una pagina Web che ho scaricato e memorizzato in una tabella del mio DB, poi questa viene caricata, decodificata e le informazione estratte con il pacchetto JSoup.
    Dopo aver estratto i dati richiesti devo trattarli senza accenti, per dei normali controlli.

    Ciao.

    @edit: in giro ho trovato
    StringUtils.stripAccents(String input)
    oppure
    use sun.text.Normalizer.normalize(s, Normalizer.DECOMP, 0);

    non conosco né l'uno, né l'altro.

    Forse qualcuno di voi ha trattato queste funzioni...
    Ultima modifica di schumy2000; 22-01-2015 a 14:27
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Per esperienza lo diventerà, perché tu analizzi e ne fai modifiche. devi sapere che tutto va bene, non togliere quello che per il tuo controllo non serve. Guarda le librerie ICU e internazionalizzazione. Jsoup non lo conosco, non so che formato vuole,

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    codice:
    String input ="Tĥïŝ, ĩš; â-+. fůňķŷ Šťŕĭńġ";
    String output =Normalizer.normalize(input,Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]","");
    String noSpecialPattern ="[^a-zA-Z0-9\\.\\s]+";
    System.out.println(output);
    System.out.println(output.replaceAll(noSpecialPattern,""));
    
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Si grazie Andrea,
    a dire il vero avevo sviluppato una cosa simile.
    l'unico problema che mi rimane è che, sia la mia funzione, che la tua, non mi risolve i seguenti caratteri:
    ø
    æ
    Æ
    forse perché nell'alfabeto italiano non sono associabili a nessuna lettera, e quindi non mi è rimasto altro che che aggiungere un controllo per la verifica di quei caratteri.

    Grazie,
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.