Ich habe ein Problem, das eine Lösung hat, die durch Iteration gelöst werden kann, aber ich frage mich, ob es eine elegantere Lösung mit regulären Ausdrücken ist und split()
Aufteilen einer Zeichenkette basierend auf jedem Zeitpunkt, zu dem ein Deterministic Finite Automata einen Endzustand erreicht?
Ich habe eine Zeichenfolge (die in der Zwischenablage Excel setzen) , die im Wesentlichen kommabegrenzt ist. Der Nachteil besteht darin, dass, wenn die Zellenwerte ein Komma enthalten, die ganze Zelle in Anführungszeichen eingeschlossen ist (vermutlich, um die Kommas in dieser Zeichenfolge zu vermeiden). Ein Beispiel String wird wie folgt dar:
123,12,"12,345",834,54,"1,111","98,273","1,923,002",23,"1,243"
Nun, ich möchte diese Zeichenfolge in einzelne Zellen zu elegant gespalten, aber der Haken ist, ich nicht einen normalen geteilten Ausdruck mit Komma als Trennzeichen verwenden können, weil sie Zellen teilen werden, dass enthalten ein Komma in ihrem Wert. Eine andere Möglichkeit, dieses Problem zu betrachten, ist, dass ich NUR auf ein Komma trennen kann, wenn es eine EVEN Anzahl von Anführungszeichen vor dem Komma gibt.
Das ist leicht mit einer Schleife zu lösen, aber ich frage mich, ob es eine reguläre expression.split-Funktion gibt, die diese Logik erfassen kann. Um dieses Problem zu lösen, konstruierte ich die Deterministic Finite Automata (DFA) für die Logik.
die Frage des folgend wird nun reduziert: gibt es eine Möglichkeit, diese Saite, so dass ein neues Feldelement wird aufzuspalten (entspricht/s) jedesmal, wenn der Endzustand hergestellt (Zustand 4 hier) ist in einem DFA erreicht?
Ich bin in VBA für diese ich denke, ich muss auf VBScript-Syntax zurückgreifen. Zum Glück sind sie meiner Meinung nach extrem ähnlich (obwohl die VBScript-Implementierung die Look-Behind-Fähigkeiten von .Net nicht unterstützt). Ich kann es kaum erwarten, es zu testen, danke! – Alain