Mammamia che casino :-)
Ma adesso, come faccio ad inserirlo in java?
Mammamia che casino :-)
Ma adesso, come faccio ad inserirlo in java?
public class AnalizzatoreLessicale{
private final static int s0=0;
private final static int s1=1;
private final static int s2=2;
...
privete final static int sn=n;
private int statoCorrente;
public AnalizzatoreLessicale(){
statoCorrente=s0;
}
privete boolean isStatoFinale(){
return statoCorrente==statofinale;
}
private boolean handler(String n){
boolean error=false;
switch(statoCorrente){
case s0:
if(n.equals("nome")){
statoCorrente=s1;
}
else{
error=true;
}
case s1:
if(n.equals(",(virgola)")){
statoCorrente=s2;
}
else{
error=true;
}
case s2:
...(sempre la solita solfa, basta guardare l'automa)
public boolean isMember(String frase){
StringTokenizer st=new StringTokenizer(frase);
boolean error=false;
while(st.hasMoreTokens()){
String token=st.nextToken();
error=handler(token);
}
if(!st.hasMoreTokens()&&error==false&&isFinalStatu s()==true){
return true;
}
else{
return false;
}
}
ciao bob,
sei stato veramente molto gentile, ma mi hanno detto che con le espressioni regolari si risolveva con 2 riche di codice :-)
Lo sapevo che era impossibile.
Grazie mille veramente,
Francesco
io pensavo che si potesse risolvere con queste 2 classi:
<%@ page import="java.util.regex.Pattern"%>
<%@ page import="java.util.regex.Matcher"%>
ciao
Basta anche una riga sola, dipende dal grado di sicurezza che vuoi. Se sei sicuro che la sottostringa "n. xxx" (dove xxx e' il numero...) compaia solo ed esclusivamente in quel punto del testo, ti basta usare la funzione replaceAll (ti ho segnalato l'altro thread in cui se n'e' parlato, in privato)
Altrimenti usi le due classi che hai detto tu.
Trovi parecchi esempi in questo sito da cui prendere spunto.
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.
Dopotutto so' divertenti le regex...
Eccoti un esempio. Sono sicuro che si possa fare di meglio:
La regex che fa il lavoro e': (?i)[ ]+n. (\\d)+[ ]+codice:String s = "Francesco, è nato ad Aversa, Il 20 aprile 1979 n. 789 perchè"; s=s.replaceAll("(?i)[ ]+n. (\\d)+[ ]+"," "); System.out.println(s);
Cioe':
codice:(?i) - ignora maiuscolo/minuscolo [ ]+ - uno o piu' spazi n. - (enne punto spazio) (\\d)+ - una o piu' cifre (la d sta per digits) [ ]+ - uno o piu' spazi
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.
Piccola precisazione: replaceAll() sostituisce tutte le sottostringhe "n. xxx" che trova. Nel tuo caso immagino sia piu' conveniente utilizzare replaceFirst(), che sostituisce solo la prima!
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.
AHHHHHHH !!!!!!!!!
mi date una mano.. mi son guardato tutto quanto ma con le regex non ce la sto facendo...
devo fare uno split di stringa se incontro una spazio, tab o invio..![]()
![]()
vi prego... non ci capisco nulla...
odio chi parla di politica..
anzi vorrei fondare un partito contro tutto ciò
codice:String stringa = "Prova1 prova2 prova3 \n Prova4 prova5 \t prova6 \t\nprova7"; String stringhe[] = stringa.split ("[\\t\\n ]+");
Folle e' l'uomo che parla alla luna.
Stolto chi non le presta ascolto.