Hallo,
Ich suche nach einer Möglichkeit zu prüfen ob ein Zeichen z.B. ! nicht zwischen zwei Anführungszeichen oder Hochkommata steht. Mein Ansatz ist folgender:
Für das was ich mit dem Zeichen anschließend vorhabe brauche ich den Index des Zeichens, deswegen sieht die Überprüfung so aus:
Das funktioniert sosweit auch ganz gut, nur sobald Escapesequenzen dazukommen klappt es nicht mehr. Beispiel:
Das SpecialChar wird behandelt als ob es nicht zwischen zwei Anführungszeichen steht, was ja im Grunde genommen auch stimmt, dennoch soll die Funktion dafür true zurückgeben.
Gibt es dafür vielleicht eine schöne Möglichkeit RegEx zu verwenden und anschließend an den Index des Zeichens zu kommen? Die Lösung sollte relativ performant sein, da sie auch auf große Texte angewendet werden soll.
Ich suche nach einer Möglichkeit zu prüfen ob ein Zeichen z.B. ! nicht zwischen zwei Anführungszeichen oder Hochkommata steht. Mein Ansatz ist folgender:
Quellcode
- public class Range {
- int begin;
- int end;
- public Range(int begin, int end) {
- this.begin = begin;
- this.end = end;
- }
- public Boolean inRange(int num)
- {
- return (num >= begin && num <= end);
- }
- }
- public List<Range> getQuotationRanges(string document)
- {
- List<Range> rng = new List<Range>();
- Boolean quot = false;
- int firstquot = 0;
- int secondquot = 0;
- for (int i = 0; i < document.Length; i++)
- {
- char c = document[i];
- if (c == '"' || c == '\'')
- {
- if (!quot)
- {
- firstquot = i;
- quot = true;
- continue;
- }
- if (quot)
- {
- secondquot = i;
- rng.Add(new Range(firstquot, secondquot));
- quot = false;
- }
- }
- }
- return rng;
- }
Für das was ich mit dem Zeichen anschließend vorhabe brauche ich den Index des Zeichens, deswegen sieht die Überprüfung so aus:
Das funktioniert sosweit auch ganz gut, nur sobald Escapesequenzen dazukommen klappt es nicht mehr. Beispiel:
Das SpecialChar wird behandelt als ob es nicht zwischen zwei Anführungszeichen steht, was ja im Grunde genommen auch stimmt, dennoch soll die Funktion dafür true zurückgeben.
Gibt es dafür vielleicht eine schöne Möglichkeit RegEx zu verwenden und anschließend an den Index des Zeichens zu kommen? Die Lösung sollte relativ performant sein, da sie auch auf große Texte angewendet werden soll.
faxe1008
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „faxe1008“ ()