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

    Problema con le espressioni regolari

    Salve a tutti.

    1) Leggo un file di input e lo piazzo in una stringa...
    2) Faccio stringa=stringa.replaceAll(sorgente,destinazione);
    3) Scrivo "stringa" su un file di output...

    Ora... devo sostituire delle occorrenze di tipo...

    ..\dd_dddd\dd_dddd.html

    con occorrenze del tipo

    ../dd_dddd/dd_dddd.html

    Dove d={0...9}

    Sapete indicarmi come devo formattare le stringhe "sorgente" e "destinazione"

    Grazie mille per le risposte e buona giornata a tutti.

    Aldo.

  2. #2
    cioè se ho capito bene devi sostituire il carattere backslash(\) con lo slash (/) ?


    Se si in questo caso basta fare stringa = stringa.replaceAll("\\","/");
    Al mio segnale... scatenate l'inferno!

  3. #3
    No... no... non hai capito...
    Devo sostituire il backslash con lo slash solo nel caso che vi sia un' occorrenza del tipo

    ..\dd_dddd\dd_dddd.html

    dove è una cifra, da 0 a 9...

    Se ci sono altri backslash li devo lasciare stare...

    Ciao...

  4. #4
    Ad ogni modo stringa.replaceAll("\\","/") genera un'eccezione...

  5. #5
    Quale eccezione?
    Al mio segnale... scatenate l'inferno!

  6. #6
    java.util.regex.PatternSyntaxException...
    grazie.

  7. #7
    Hai ragione...

    così dovrebbe andare:

    codice:
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class EspressioniRegolari {
        
        /** Creates a new instance of EspressioniRegolari */
        public EspressioniRegolari() {
        }
        
        public static void main(String[] args) {
            String input = "..\\11_1124\\23_2345.html";
            
            Pattern p = Pattern.compile("\\\\[0-9]{2}_[0-9]{4}\\\\[0-9]{2}_[0-9]{4}\\.html");
            Matcher m = p.matcher(input);
            if(m.find()){
                input=input.replaceAll("\\\\","/");
                System.out.println(input);
            }else{
                System.out.println("non contiene l'occorrenza cercata");
            }
            
            
    
        }
        
    }
    Al mio segnale... scatenate l'inferno!

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    L'eccezione è dovuta al fatto che non è stato fatto il quoting del metacarattere " \ ".
    Ad ogni modo mi sa che ti confiene usare un Matcher per trovare la stringa che corrisponda a quanto richiedi, quindi utilizzare replaceAll().

    Attenzione: devi quotare il metacarattere " \ ". Quindi, per sostituirlo devi fare così:
    codice:
    stringa.replaceAll("\\\\", "/");
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Io farei così:

    codice:
    str = str.replaceAll ("\\\\(\\d{2}_\\d{4})\\\\(\\d{2}_\\d{4})\\.html", "/$1/$2.html");
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.