codice:tmpStr="ATT_00200_4" Pattern p = Pattern.compile("(^ATT_)+.....+(^_.)"); Scanner s = new Scanner(tmpStr).useDelimiter(p); String id = s.next();
voglio ottenere 00200 dove sbaglio? data una stringa mi serve cio' che c'e' tra i due underscore
codice:tmpStr="ATT_00200_4" Pattern p = Pattern.compile("(^ATT_)+.....+(^_.)"); Scanner s = new Scanner(tmpStr).useDelimiter(p); String id = s.next();
voglio ottenere 00200 dove sbaglio? data una stringa mi serve cio' che c'e' tra i due underscore
Innanzitutto la espressione regolare usata da Scanner è per rappresentare un "delimitatore" ... un qualcosa che separa i token, che generalmente è sempre uguale tra i vari token (es. spazi o virgola o qualcosa di più complesso).Originariamente inviato da assmazz
voglio ottenere 00200 dove sbaglio?
Se poi Scanner intendevi usarlo direttamente con in input la stringa e solo per "estrarre" qualcosa dal mezzo, allora Scanner non ti è particolarmente utile .... usa Matcher e i "gruppi"!!
codice:import java.util.regex.*; public class Prova { public static void main(String[] args) { String str = "ATT_00200_4"; Pattern p = Pattern.compile("ATT_(\\d+)_4"); Matcher m = p.matcher(str); if (m.find()) { System.out.println(m.group(1)); } } }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok perfetto avevo inteso male io l'uso di Scanner