13.04.2007, 10:20
Guten Tag liebe Webhilfe-Community,
da mir schon bei meiner letzten Frage so gut geholfen wurde, wende ich mich mit einem aktuellen Problem an euch, diesmal ist es besser zu verstehen und nur etwas kompliziertes als das letzte Problem.
Ich habe ein Script geschrieben, welcher mir beim splitten von einem bestimmten Stringteil in einem Text behilflich ist.
Es ist ziemlich simpel:
Man gibt einen Text in eine Textarea ein und der Script sucht einen 32stelligen, in hexidezimalem Zahlensystem vorhandenen String aus und gibt diesen dem Benutzer zurück.
Bisher liegt meine Trefferquote bei 96% da ich eine kleine Sache außer acht gelassen habe; da ich nur nach 32stelligen Teilstring suchen lasse, kommen manchmal auch 32stellige Texte, die nicht hexidezimal sind.
Nun, ich habe über einige Methoden nachgedacht, wie ich am besten jeden Teilstring auf die hexidezimale Pattern überprüfen könnte; jedoch habe ich mich hierbei in eniigen Schleifen verwurschtelt, was den Script massiv verlangsamt; bei einem durchsuchenden Text von mehr als 100k Zeichen kann es leicht vorkommen, das diese Schleifen zum Auslasten des Browsers führt.
Deswegen brauche ich eine schnelle und zuverlässige Möglichkeit, einen Text auf die folgenden Pattern durchsuchen kann:
-hexidezimal
-32stellig
Ich habe es auf folgender Weise versucht:
Ich speichere jeden Teilstring, den mein Script anhand dieser Kriterien erkannt hat, in einem Zwischen-Array und untersuche jedes einzelne Zeichen des 32stelligen Hex-Codes auf ihren Hex-Code, das bedeutet mithilfe von String.charCodeAt(i) bekomme ich den Zahlenwert, den ich im ASCII einfach abgleichen kann; wenn der Zahlenwert kleiner oder größer a-f und 0-9 ist, kann es kein Hex-Code sein, also wird der Teilstring mit dem jeweiligen Index gelöscht.
Diese Methode erfordert jedoch eine Schleife in der Schleife, die j>32 geht, somit zu einer großen Auslastung führt, sofern der eingegebene Text groß sein sollte, was es zu 70% aller Fälle ist.
Die andere Möglichkeit die ich zuvor versucht hatte, war nicht minder ineffizient:
ich definierte ein Array mit allen Sonderzeichen, die in einem HexCode unmöglich vorkommen könnten, wie : ) & / usw. Jedoch brauchte diese Methode noch mehr Speicher, also hatte ich diese erst gar nicht ausprobiert...
Das Hauptproblem ist; ich kenne keine Möglichkeit in JS, wie ich ein Text nach einem speziellen Pattern durchsuchen könnte, mir ist es möglich anhand der text.length die Hexcodes grob zu extrahieren, habe jedoch keine gute Möglichkeit gefunden, ohne viel Auslastung diese 32stelligen Array-Werte auf Hex-Code zu überprüfen, könnt ihr mir weiterhelfen?
mfg,
fakerlol
da mir schon bei meiner letzten Frage so gut geholfen wurde, wende ich mich mit einem aktuellen Problem an euch, diesmal ist es besser zu verstehen und nur etwas kompliziertes als das letzte Problem.
Ich habe ein Script geschrieben, welcher mir beim splitten von einem bestimmten Stringteil in einem Text behilflich ist.
Es ist ziemlich simpel:
Man gibt einen Text in eine Textarea ein und der Script sucht einen 32stelligen, in hexidezimalem Zahlensystem vorhandenen String aus und gibt diesen dem Benutzer zurück.
Bisher liegt meine Trefferquote bei 96% da ich eine kleine Sache außer acht gelassen habe; da ich nur nach 32stelligen Teilstring suchen lasse, kommen manchmal auch 32stellige Texte, die nicht hexidezimal sind.
Nun, ich habe über einige Methoden nachgedacht, wie ich am besten jeden Teilstring auf die hexidezimale Pattern überprüfen könnte; jedoch habe ich mich hierbei in eniigen Schleifen verwurschtelt, was den Script massiv verlangsamt; bei einem durchsuchenden Text von mehr als 100k Zeichen kann es leicht vorkommen, das diese Schleifen zum Auslasten des Browsers führt.
Deswegen brauche ich eine schnelle und zuverlässige Möglichkeit, einen Text auf die folgenden Pattern durchsuchen kann:
-hexidezimal
-32stellig
Ich habe es auf folgender Weise versucht:
Ich speichere jeden Teilstring, den mein Script anhand dieser Kriterien erkannt hat, in einem Zwischen-Array und untersuche jedes einzelne Zeichen des 32stelligen Hex-Codes auf ihren Hex-Code, das bedeutet mithilfe von String.charCodeAt(i) bekomme ich den Zahlenwert, den ich im ASCII einfach abgleichen kann; wenn der Zahlenwert kleiner oder größer a-f und 0-9 ist, kann es kein Hex-Code sein, also wird der Teilstring mit dem jeweiligen Index gelöscht.
Diese Methode erfordert jedoch eine Schleife in der Schleife, die j>32 geht, somit zu einer großen Auslastung führt, sofern der eingegebene Text groß sein sollte, was es zu 70% aller Fälle ist.
Die andere Möglichkeit die ich zuvor versucht hatte, war nicht minder ineffizient:
ich definierte ein Array mit allen Sonderzeichen, die in einem HexCode unmöglich vorkommen könnten, wie : ) & / usw. Jedoch brauchte diese Methode noch mehr Speicher, also hatte ich diese erst gar nicht ausprobiert...
Das Hauptproblem ist; ich kenne keine Möglichkeit in JS, wie ich ein Text nach einem speziellen Pattern durchsuchen könnte, mir ist es möglich anhand der text.length die Hexcodes grob zu extrahieren, habe jedoch keine gute Möglichkeit gefunden, ohne viel Auslastung diese 32stelligen Array-Werte auf Hex-Code zu überprüfen, könnt ihr mir weiterhelfen?
mfg,
fakerlol