Portal > Foren > Java > Allgemeine Java-Programmierung > StrinkTokenizer oder doch RegExp?
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 14.03.2006, 13:41 Nach oben    #1
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard StrinkTokenizer oder doch RegExp?

Hi,
kurze Frage.
Ich habe das hier:
Java Code:
  1. StringTokenizer tok = new StringTokenizer(value.toString(), ";");
  2.                
  3.                 while(tok.hasMoreTokens()) {
  4.                     System.out.println(tok.nextToken());
  5.                 }
Ich erhalte dann eine Ausgabe von
Code:
(50,50)
(80,80)
wenn
Java Code:
  1. value = "(50,50);(80,80)

Ich brauche aber (dringend!) in der Schleife mit den Tokens dann irgendwie pro Token zwei Werte, so dass ich dann eine Methode aufrufen kann, die zwei Integer-Werte als Parameter erwartet.

Also ich müsste irgendwie sowas machen
Java Code:
  1. methode(50,50);
also in der Schleife ... nur das die Werte eben die Werte aus den Klammern sind.
Wie mache ich das denn am besten und schnellsten?

Hilfe. Noch 19 Minuten .

Danke.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2006, 14:18 Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 539
Standard

Noch ein StringTokenizer in der Schleife der nach "," splitet, die Klammern dann weg "replacen" und in Integer parsen!?

Dürfte auf jedenfall schneller sein als RegExp
Gottzilla ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2006, 16:17 Nach oben    #3
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Zitat:
Zitat von Gottzilla
Noch ein StringTokenizer in der Schleife der nach "," splitet, die Klammern dann weg "replacen" und in Integer parsen!?
Ah, oh .. hätte man auch selbst drauf kommen können.

Zitat:
Zitat von Gottzilla
Dürfte auf jedenfall schneller sein als RegExp
Weiß ich nicht.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2006, 17:49 Nach oben    #4
Benutzer
 
Registriert seit: 13.01.2006
Ort: Hannover
Beiträge: 48
Standard

Kleine Zwischenfrage, ich hab gelesen das Scanner effektiver sein soll als StringTokenizer, wisst ihr da was drüber? Den einzigen unterschied den ich kenne ist das Scanner längere Trennmuster haben kann, Tokenizer nur ein Char.
js-mueller ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2006, 18:01 Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von karahead
 
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
Standard

@js-mueller
Scanner gibt es erst ab Java 5. Iirgendwo hab ich auch mal gelesen, dass man die Scannerklasse dem StringTokenizer vorziehen soll.

---Edit
Achja hier.

"Noch flexibler als ein StringTokenizer ist die in Java 5 eingeführte Klasse java.util.Scanner." --- Java ist auch eine Insel.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag.

Geändert von karahead (14.03.2006 um 18:08 Uhr)
karahead ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2006, 12:12 Nach oben    #6
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.134
Standard

Also für so'n simples Format hätte ich jetzt nen kleinen Parser geschrieben. Ist doch nur Minutensache:
java Code:
  1. public class PointParser {
  2.     public static List<Point> parse(String str) {
  3.         List<Point> resultList = new ArrayList<Point>();
  4.         Point p;
  5.         int lastMatch = -1;
  6.         for(int i = 0; i < str.length(); i++) {
  7.             char c = str.chatAt(i);
  8.             switch(c) {
  9.                 case '(':
  10.                     if(p != null) {
  11.                         // syntax error
  12.                         throw new IllegalArgumentException("The parameter is in wrong format.");
  13.                     }
  14.                     p = new Point();
  15.                     lastMatch = i;
  16.                     break;
  17.                 case ')':
  18.                     if(p == null) {
  19.                         // syntax error
  20.                         throw new IllegalArgumentException("The parameter is in wrong format.");
  21.                     }
  22.                     p.y = Integer.parseInt(str.substring(lastMatch+1, i)); // might be wrong indexes
  23.                     resultList.add(p);
  24.                     lastMatch = -1;
  25.                     p = null;
  26.                     break;
  27.                 case ',':
  28.                     if(lastMatch == -1) {
  29.                         // syntax error
  30.                         throw new IllegalArgumentException("The parameter is in wrong format.");
  31.                     }
  32.                     p.x = Integer.parseInt(str.substring(lastMatch+1, i)); // might be wrong indexes
  33.                     lastMatch = i;
  34.             }
  35.         }
  36.         return resultList;
  37.     }
  38. }

Wobei ich das natürlich nicht vorher getestet habe...

Wobei man natürlich den "Point" auch an einen Listener schicken kann - ähnlich wie SAX - das wäre dann noch schneller.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2006, 13:15 Nach oben    #7
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

<offtopic>
Zitat:
Zitat von pago
Ist doch nur Minutensache
Arroganz ist eine feine Sache!
</offtopic>

Ich werde Deinen Code auf jeden Fall mal testen.
Danke zumindest dafür.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2006, 13:59 Nach oben    #8
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.134
Standard

Jau. Arroganz ist genial.
Aber wer ist denn arrogant? Also ich kenn da keinen...
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Werte in einen Regexp einsetzen. ex³ PHP-Programmierung 6 02.02.2007 07:27
Was macht mein regexp? ex³ PHP-Programmierung 3 05.11.2006 11:52
regexp Datums-Vervollständigung ex³ PHP-Programmierung 10 12.02.2006 16:16
[PHP] Regexp und die Gierigkeit CIX88 Tutorials 0 29.01.2006 13:36
[MySQL] REGEXP Problem Jay Datenbanken 3 27.12.2005 13:52


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45