webForumDet fria alternativet

Redigera sträng

6 svar · 445 visningar · startad av AG

AGMedlem sedan mars 20001 229 inlägg
#1

Har ett servlet som hämtar information från en specifik sida och genererar ett resultat.
Detta resultat skulle jag vilja "styla" till lite så det blir lättare att läsa.
Nedan följer texten som genereras:

       1 
           
           
         
                 15 
                   TAP LADY    
                  Karlsson Mats   
           
          22,54  
           
         4,79 
           
         18,5 
           
           
     
     
           
           
           
           
           
     

     
           
           
         2 
           
           
         
                 12 
                   ZUGI    
                  Landin Sven-Erik   
           
          (242)  
           
         5,99 
           
         19,0 
           
           
     
     
           
           
           
           
           
     

     
           
           
         3 
           
           
         
                 9 
                   PRINCESS LEGEND    
                  Strömberg Hans R   
           
          (156)  
           
         5,36 
           
         19,2 
           
           
     
     
           
           
           
           
           
     

     
           
           
         4  
           
           
         
                 10 
                   ILONA GRACE    
                  Jansson Torbjörn   
           
          (202)  
           
          
           
         19,2 
           
           
     
     
           
           
           
           
           
     

     
           
           
         5  
           
           
         
                 7 
                   BLAZE OFFICE    
                  Ericson Leif   
           
          (48)  
           
          
           
         19,3 
           
           
     
     
           
           
           
           
           
     

     
           
           
         6  
           
           
         
                 14 
                   VILLAGE KING    
                  Witasp Leif   
           
          (491)  
           
          
           
         19,4g 
           
           
     
     
           
           
           
           
           
     

     
           
           
         7  
           
           
         
                 1 
                   HOT SUN    
                  Eriksson Sören   
           
          (32)  
           
          
           
         20,2 
           
           
     
     
           
           
           
           
           
     

      
           
           
           
           
           
     
    

     
           
           
         0 
           
           
         
                 5 
                   AVALANCHE CARJAN    
                  Frick Kajsa   
           
          (93)  
           
          
           
         20,4g 
           
           
     
     
           
           
           
           
           
     

     
           
           
         0 
           
           
         
                 6 
                   EX CON    
                  Tengstad Fredrik   
           
          (410)  
           
          
           
         19,7g 
           
           
     
     
           
           
           
           
           
     

     
           
           
         0 
           
           
         
                 8 
                   BLÅTIRAN    
                  Dahlman John   
           
          (236)  
           
          
           
         20,1 
           
           
     
     
           
           
           
           
           
     

     
           
           
         0 
           
           
         
                 11 
                   JUSTITIA IKELINE    
                  Byström John   
           
          (70)  
           
          
           
         20,8 
           
           
     
     
           
           
           
           
           
     

     
           
           
         0 
           
           
         
                 4 
                   JASMIN PRIDE    
                  Brasar Per-Olov   
           
          (118)  
           
          
           
         21,6 
           
           
     
     
           
           
           
           
           
     

     
           
           
         0 
           
           
         
                 3 
                   RARITY    
                  Eskilsson Claes   
           
          (225)  
           
          
           
         ug 
           
           
     
     
           
           
           
           
           
     

     
           
           
         d 
           
           
         
                 13 
                   BROOK VILLAGE    
                  Åberg Jan-Olov   
           
          (235)  
           
          
           
         m8g 
           
           
     
     
           
           
           
           
           
     

     
           
           
         d 
           
           
         
                 2 
                   ANTON T.N.SPEED    
                  Jonsson Alf   
           
          (301)  
           
          
           
         14g

Texten hämtas från:
http://www.atg.se/ResultatServlet?datum=20021213&bankod=Rä&action=loppresultat&betType=VP&race=1

Skulle vilja få den så den ser ut något som:
1 15 TAP LADY Karlsson Mats
2 12 ZUGI Landin Sven-Erik osv.

Hur skulle man kunna styla om en sådan text, förslag mottages gärna.

Andreas

spangoMedlem sedan juni 20006 147 inlägg
#2

Säger bara en sak: Regexpar :)

AGMedlem sedan mars 20001 229 inlägg
#3

Medveten om detta :)
Men vart fan börjar man.
Har letat för fullt efter en funktion som tar bort "\n" dvs tomma rader, utan resultat. Sen måste man göra ett urval och välja bort.

Frågan är egentligen hur. Någon på suns javaforum gav mig en liten kodsnutt.

String reduceWhitespace = input.replaceAll("\\s+", " ");
String formatString = reduceWhitespace.replaceAll("([0-9]) ([0-9][0-9]) ([A-Z]+( [A-Z]+)?) ([A-Za-z _]+)", "$1 $2 $3 $5");
Pattern p7 = java.util.regex.Pattern.compile("[0-9] [0-9][0-9] [A-Z]+( [A-Z]+)? [A-Za-z _]+");

Matcher m7 = p7.matcher(formatString);

while (m7.find())
out.println("found=" + m7.group() + "\n<br>");

Den fungerade dock bara bara på de två översta innan den började generera fel.

Andreas

JaarMedlem sedan juli 2001434 inlägg
#4

Det är för att du har åäö i tredje.. Du får lägga till de så att den inte buggar ut på de tecknen.

AGMedlem sedan mars 20001 229 inlägg
#5

Hur lägger man till det då?
`Den klipper även vid bindestrecket i namnet "Sven-Erik".

Andreas

JaarMedlem sedan juli 2001434 inlägg
#6

Ok. I din replace all så kör du en regular expr. Läs mer om vad ud kan ersätta där här:

http://java.sun.com/j2se/1.4.1/docs/api/java/util/regex/Pattern.html#sum

Sen för att kolla mer om funktionen replaceAll som körs får du kolla här

http://java.sun.com/j2se/1.4.1/docs/api/java/lang/String.html#replaceAll(java.lang.String, java.lang.String)

Hoppas dessa hjälper

AGMedlem sedan mars 20001 229 inlägg
#7

Ändarde lite för att få bort problem med 3:an och att inte övriga följer. Men än vill det sig ej.

String input = (String) resultat;

Pattern p = Pattern.compile("&nbsp;");
Matcher m = p.matcher(input);
input = m.replaceAll("");

Pattern p2 = Pattern.compile("<(.|\n)+?>");
Matcher m2 = p2.matcher(input);
input = m2.replaceAll("");

Pattern p3 = Pattern.compile("<(.|\n)+");
Matcher m3 = p3.matcher(input);
input = m3.replaceAll("");

Pattern p4 = Pattern.compile("(.|\n)>");
Matcher m4 = p4.matcher(input);
input = m4.replaceAll("");

Pattern p5 = Pattern.compile("å, ä");
Matcher m5 = p5.matcher(input);
input = m5.replaceAll("a");

Pattern p6 = Pattern.compile("ö");
Matcher m6 = p6.matcher(input);
input = m6.replaceAll("o");

Pattern p8 = Pattern.compile("-");
Matcher m8 = p8.matcher(input);
input = m8.replaceAll("i");

String reduceWhitespace = input.replaceAll("\\s+", " ");
String formatString = reduceWhitespace.replaceAll("([0-9]) ([0-9][0-9]) ([A-Z]+( [A-Z]+)?) ([A-Za-z _]+)", "$1 $2 $3 $5");
Pattern p7 = java.util.regex.Pattern.compile("[0-9] [0-9][0-9] [A-Z]+( [A-Z]+)? [A-Za-z _]+");

Matcher m7 = p7.matcher(formatString);

while (m7.find())
out.println("found=" + m7.group() + "\n<br>");

Andreas

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb