04. august 2009 - 20:36Der er
5 kommentarer og 1 løsning
simpelt regulært udtryk i Java
Hej jeg har følgende kode: Mit map indeholder en masse forskellige unikku koder. F.eks.
"11112","11113","1114" osv.
private Map koder = new HashMap();
String reqex = "1" ArrayList results = new ArrayList(); Pattern p = Pattern.compile(reqex);
Set keys = koder.keySet(); while (ite.hasNext()) { String candidate = (String) ite.next(); Matcher m = p.matcher(candidate); if (m.matches()) { System.out.println("it matches"); results.add(candidate); } } System.out.println("results match"+results);
Ved at søge på reqeq = "1" finder jeg kun en match, men jeg vil gerne søge igennem alle mine elementer i min map for at finde match. Jeg vil i bund og grund gerne implementer en søgning ligesom LIKE = 'kode%' i SQL. Så hvis reqex ="11" skulle jeg gerne finde alle de elementer der starter med 11
Arne>> takker. for pokker jeg havde glemt .* for enden af min streng. Nu virker det. Jeg har skåret en autocomplete ned fra 200 ms til gennemsnitlig 80 ms. Tusinde tak for hjælpen. Smider du ikke et svar ?
Arne>> har lige et tillægsspørgsmål(du siger bare til hvis jeg skal oprettet et nyt spørgsmål) Ovenstående regulære udtryk fejlser hvis jeg skriver String reqex = "1).*"; Udtrykker fejlser også ved en * Kan du lige gennemskue hvad jeg gør forkert )
Takker Arne. Jeg man skal lige huske at en ( skal escapes med \\
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.