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

    [JAVA]Consiglio su semplice espressione regolare

    Ciao a tutti,
    ho un database con memorizzati dei titoli di films. Alcuni però hanno ", The" memorizzato alla fine. Ecco un esempio dei dati contenuti per farvi capire:

    -Beauty and the Beast (1991)
    -Wild Bunch, The (1969)
    -Blue Angel, The (Blaue Engel, Der) (1930)

    Vorrei che diventassero :
    -Beauty and the Beast
    -The Wild Bunch
    -The Blue Angel

    Quindi eliminare tutte le cose fra parentesi (date e stringhe), e dove presente eliminare il ", The". Poi lo posso rimettere ad inizio stringa con:
    titolo = "The "+titolo;

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA]Consiglio su semplice espressione regolare

    Originariamente inviato da kucchiaio84
    ho un database con memorizzati dei titoli di films. Alcuni però hanno ", The" memorizzato alla fine.
    Quindi eliminare tutte le cose fra parentesi (date e stringhe), e dove presente eliminare il ", The".
    Io direi innanzitutto di eliminare tutte le (....) che stanno al fondo (anche più di una, come nel tuo terzo esempio) e che hanno davanti uno (o più) spazi.

    In sostanza rimuovere:
    codice:
     qualunque-whitespace '(' qualunque-cosa ')'
    \___________________________________________/
          tutto questo ripetibile N volte
    Quindi si potrebbe fare:

    codice:
    String s2 = s1.replaceAll("(\\s+\\(.*?\\))+$", "");
    Sembra complicata ma non è molto difficile (nota, ora riporto i caratteri nella stringa):
    \s+ = uno o più whitespace
    \( = proprio la parentesi (
    .*? = qualunque cosa
    \) = proprio la parentesi )

    tutto racchiuso in ( .... )+ cioè si può ripetere una o più volte. Alla fine $ per indicare la fine dell'input (in modo che catturi solo al fondo).

    Quindi ti resterebbe ad esempio "Blue Angel, The" e puoi usare endsWith() di String per vedere se termina con ", The". Se così fai un substring.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie mille, sei stato chiarissimo!

    Ho implementato il codice e funziona a meraviglia!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da kucchiaio84
    Grazie mille, sei stato chiarissimo!

    Ho implementato il codice e funziona a meraviglia!
    Prego. Solo ancora due note: il replaceAll (in effetti bastava solo replaceFirst visto che l'occorrenza è una sola) di String compila ogni volta il pattern. Se hai tanti titoli da trattare, conviene usare direttamente Pattern/Matcher (package java.util.regex) per compilare il pattern una volta sola.

    Inoltre (e questo è più interessante), sempre con Pattern/Matcher si può pensare di realizzare una espressione solo un pochino più complessa che permette di:
    - controllare la presenza di ", The" (così sai se mettere "The " in testa)
    - eliminare tutta la parte delle ( ) compreso il ", The".
    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.