Also ....
Ich lese eine Liste von Strings ein und vergleiche diese Miteinander.
Beispiel:
Daraus baue ich mir eine ArrayList mit einer erweiterten Version von Character (CharacterEx). Dies sind dann so aus:
Das X bedeutet das hier eine Zahl steht, die Variabel ist.
Das Y bedeutet das hier ein String steht, der Variabel ist.
Meine Klasse CharacterEx speichert die Position innerhalb des Originalstrings sowie den Typen.
Typen:
Um den Variablen String in der Mitte zu finden, gehe ich meine Ausgangsstrings von vorne und von hinten durch und vergleiche. Zum Schluss werden die Ergebnisse zusammengefasst.
Nun hat man die Möglichkeit ein Muster festzulegen. Hierfür folgende Schreibweise:
Nun muss das ganze auf den String gematcht werden, so das folgendes Ergebnis herauskommt:
Nun gäbe es eine Klasse, ich nenne sie einmal StringEx, die die Informationen speichert, und dies alles für jedes Element in der Liste:
List:
Sollte ein Element öfter vorkommen (z.B. [HIS], wäre der Alias für das zweite Element [HIS|2]).
Meine Idee war nun eine Art Parser zu schreiben, der ähnlich wie Regex funktioniert, nur halt auf meinen Fall anwendbar ist. Allerdings fehlt mir gerade die Vorstellung wie ich das angehen soll.
Aktuell spiele ich mit folgendem Gedanken:
Das Ursprungsmuster in eine Map packen:
Dann gehe ich meine Liste von CharacterEx durch und .... tja. Hier fehlt mir dann irgendwie eine Idee wie ich das umsetzten kann. Es ist auch NICHT zwingend erforderlich, das zwischen den einzelnen Mustern ein "." ist. es könnte auch:
sein, der dann auf folgendes matcht, das ist also variabel:
Was ich hier NICHT erwarte: Eine fertige Lösung von jemandem. FALLS es so etwas in der Art allerdings schon gibt, gerne her damit! Auch Codebeispiele usw. wären hilfreich. Aber im Endeffekt freue ich mich über Ideen die mich weiter bringen, Stichwörter usw.
Dies ist ein Crosspost, da in einem anderen Forum leider keine Antwort bisher gefunden wurde:
http://www.java-forum.org/allgemein...arsen-eigenes-muster-anwenden-kein-regex.html
Sollte es hier oder im anderen Forum antworten geben, führe ich die natürlich zusammen, so das niemand doppelte Arbeit hat ;-)
Ich lese eine Liste von Strings ein und vergleiche diese Miteinander.
Beispiel:
- AA.A.A001.BBB.ab.cde
- AA.A.A002.CC.ab.cde
- AA.A.A003.DDDD.ab.cde
Daraus baue ich mir eine ArrayList mit einer erweiterten Version von Character (CharacterEx). Dies sind dann so aus:
Code:
AA.A.A00X.Y.ab.cde
Das X bedeutet das hier eine Zahl steht, die Variabel ist.
Das Y bedeutet das hier ein String steht, der Variabel ist.
Meine Klasse CharacterEx speichert die Position innerhalb des Originalstrings sowie den Typen.
Typen:
- Unbekannt
- String
- Integer
Um den Variablen String in der Mitte zu finden, gehe ich meine Ausgangsstrings von vorne und von hinten durch und vergleiche. Zum Schluss werden die Ergebnisse zusammengefasst.
Nun hat man die Möglichkeit ein Muster festzulegen. Hierfür folgende Schreibweise:
Code:
[HS].[HIS].[S].[D]
[HS] = Fester String (kann alles enthalten, auch zahlen)
[HIS] = Fester String, der VARIABLE! Zahlen enthalten kann
[S] = Variabler String
[D] = Dummy (alles andere)
Nun muss das ganze auf den String gematcht werden, so das folgendes Ergebnis herauskommt:
Code:
AA.A.A00X.Y.ab.cde
Code:
[HS] = AA.A
.
[HIS] = A00X
.
[S] = Y
.
[D] = ab.cde
Nun gäbe es eine Klasse, ich nenne sie einmal StringEx, die die Informationen speichert, und dies alles für jedes Element in der Liste:
List:
Code:
-------------
Type: [HS]
Value: AA.A
Position: 0, 3
Index: 0
Alias: [HS|1]
-------------
Type: divider
Value: .
Position: 4,4
Index: 1
-------------
Type: [HIS]
Value: A00X
Position: 5,9
Index: 2
Alias: [HIS|1]
-------------
Type: divider
Value: .
Position: 10,10
Index: 3
-------------
Type: [S]
Value: Y
Position: 11,11
Index: 4
Alias: [S|1]
-------------
Type: divider
Value: .
Position: 12,12
Index: 5
-------------
Type: [D]
Value: ab.cde
Position: 13,18
Index: 6
Alias: [D|1]
-------------
Sollte ein Element öfter vorkommen (z.B. [HIS], wäre der Alias für das zweite Element [HIS|2]).
Meine Idee war nun eine Art Parser zu schreiben, der ähnlich wie Regex funktioniert, nur halt auf meinen Fall anwendbar ist. Allerdings fehlt mir gerade die Vorstellung wie ich das angehen soll.
Aktuell spiele ich mit folgendem Gedanken:
Das Ursprungsmuster in eine Map packen:
Code:
map.put("[HS]")
map.put(".")
...
Code:
[HS][HIS][S][D]
Code:
[HS] = AA.A.
[HIS] = A00X.
[S] = Y
[D] = .ab.cde
Was ich hier NICHT erwarte: Eine fertige Lösung von jemandem. FALLS es so etwas in der Art allerdings schon gibt, gerne her damit! Auch Codebeispiele usw. wären hilfreich. Aber im Endeffekt freue ich mich über Ideen die mich weiter bringen, Stichwörter usw.
Dies ist ein Crosspost, da in einem anderen Forum leider keine Antwort bisher gefunden wurde:
http://www.java-forum.org/allgemein...arsen-eigenes-muster-anwenden-kein-regex.html
Sollte es hier oder im anderen Forum antworten geben, führe ich die natürlich zusammen, so das niemand doppelte Arbeit hat ;-)