Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    52

    differenza tra i metodi replace, replaceAll e replaceFirst

    ciao a tutti sono nuovo

    sto studiando il linguaggio java per un corso universitario (facoltà di informatica naturalmente) e sono ancora alle prime armi. qualcuno può risolvere un mio problema? sto studiando diversi metodi da applicare sulle stringhe, ma non riesco a capire la differenza tra questi tre metodi: replace, replaceAll e replaceFirst. a me sembrano tutti uguali e non riesco a capire cosa cambia... qualcuno può aiutarmi?

    grazie mille ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Visto che stai incominciando ora a studiare java, prendi la buona abitudine di lavorare con le API aperte a portata di click (se non hai un manuale cartaceo):

    http://java.sun.com/javase/6/docs/ap...ng/String.html

    hai due replace, replaceAll lavora con le regex, replaceFirst pure lavora con le regex, però come dice il nome, sostituisce solo la prima occorrenza.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    52
    Originariamente inviato da Andrea1979
    Visto che stai incominciando ora a studiare java, prendi la buona abitudine di lavorare con le API aperte a portata di click (se non hai un manuale cartaceo):

    http://java.sun.com/javase/6/docs/ap...ng/String.html

    hai due replace, replaceAll lavora con le regex, replaceFirst pure lavora con le regex, però come dice il nome, sostituisce solo la prima occorrenza.
    scusa per l'ignoranza (sono ancora all'inzio...), ma cosa sono le regex?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    regex = regular expression (ossia "espressioni regolari").
    http://it.wikipedia.org/wiki/Espressione_regolare

    Ti avranno sicuramente già parlato di grammatiche, automi a stati finiti etc etc...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    52
    Originariamente inviato da Andrea1979
    regex = regular expression (ossia "espressioni regolari").
    http://it.wikipedia.org/wiki/Espressione_regolare

    Ti avranno sicuramente già parlato di grammatiche, automi a stati finiti etc etc...
    mmm... veramente no!

    comunque ho capito che replaceFirst sostituisce sola prima occorenza, ma che differenza c'è tra replace e replaceAll? per esempio il metodo replace(String, String) e il metodo replaceAll(String, String) non fanno la stessa cosa?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    52
    nessuno mi sa rispondere? i metodi replace(String, String) e replaceAll(String, String) non sono la stessa cosa? che differenza c'è?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da auron567
    mmm... veramente no!

    comunque ho capito che replaceFirst sostituisce sola prima occorenza, ma che differenza c'è tra replace e replaceAll? per esempio il metodo replace(String, String) e il metodo replaceAll(String, String) non fanno la stessa cosa?
    Mi sembra il caso di fare un mini corso sul replace.

    Nella classe String ci sono 4 metodi per fare operazioni di "replace" su una stringa:

    String replace(char oldChar, char newChar)
    String replace(CharSequence target, CharSequence replacement)


    Questi due metodi non usano delle "espressioni regolari". La prima usa dei char, la seconda dei CharSequence. CharSequence è semplicemente una interfaccia che "accomuna" diverse classi tra cui String, StringBuffer e alcune altre.
    La ricerca/sostituzione avviene usando esattamente il contenuto degli argomenti. Dal momento che non usano espressioni regolari, gli argomenti indicano esattamente cosa cercare/sostituire. Nessun carattere cioè è "speciale" in questi argomenti.


    String replaceAll(String regex, String replacement)
    String replaceFirst(String regex, String replacement)


    Questi ultimi due metodi invece usano le espressioni regolari. Una espressione regolare è una espressione che tramite una apposita sintassi che fa uso di quelli che sono chiamati "metacaratteri", è in grado di rappresentare un insieme di stringhe.

    Ad esempio la espressione regolare \d[a-c] rappresenta "un digit" seguito da "una lettera nel range a...c". Quindi a questa espressione regolare corrispondo stringhe come "0a", "9c", "5b" ecc... ma non ad esempio "07" o "a0".

    L'unica differenza tra replaceAll e replaceFirst è che la prima sostituisce tutte le occorrenze mentre la seconda sostituisce solo la prima occorrenza.

    Esempio che può chiarire:

    codice:
    String s1 = "5af0g4c";
    String s2 = s1.replaceAll ("\\d[a-c]", "X");
    In s2 si avrà "Xf0gX".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    52
    grazie mille! ora penso di aver capito... dopo faccio qualche test e vedo se ho bene in mente la situazione... comunque grazie mille ancora!

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.