Hallo,
wie kann ich aus einem C# Code Strings erkennen?
und das automisch...?`
Wuerd gern Zeile+String ausgeben...
Ich hab keine Idee wie man das ausliest.
Es kann auch sein dass in einem C# Code mehrere Strings in einer Zeile sind,...
lg
Andreas
Unsere Website
iPhone Programmierung | Android Programmierung
Hallo,
wie meinst du denn das? Könntest du etwas näher erläutern?
**:::
Ich will eine C# Datei einlesen mit meinem C# Programm auslesen.
Und dann ausgeben wo sich strings in der C# Datei befinden z.b.
Eingelesen:
String text="asdasdasd";
MessageBox.show("asdf","asdasd");
Ausgabe dann:
Zeile 1:
"asdasdasd"
Zeile2:"asdf"
Zeile2:"asdasd"
Dieses macht ja Visual Studio auch. Es gibt diese Strings dann gruen aus.
Unsere Website
iPhone Programmierung | Android Programmierung
Am einfachsten mit RegEx; du hast ja die " als Begrenzung.
**:::
ok 😃
auch wenn ich mehrere " in einer Zeile habe?
Unsere Website
iPhone Programmierung | Android Programmierung
ja, du mußt gieriges Verhalten unterdrücken.
**:::
vielleicht auch folgendes regex:
"([^"]|(?<=\\)")*"
wobei die raw-strings (mit @ davor) nicht drinne sind.
beste Grüße
zommi
das oben haut nicht hin ,...das is dann kein string mehr...
hier meine variante:
*"[A-Za-z0-9]"*
geht die nicht wieso?
Unsere Website
iPhone Programmierung | Android Programmierung
probiere mal:
string pattern = "\"[^\"]*\"";
**:::
Habs jetzt mit
http://www.txt2re.com/ gemacht
public string containsstring(String strToCheck)
{
string re1 = ".*?"; // Non-greedy match on filler
string re2 = "(\".*?\")"; // Double Quote String 1
Regex r = new Regex(re1 + re2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match m = r.Match(strToCheck);
return m.Groups[1].ToString();
}
Unsere Website
iPhone Programmierung | Android Programmierung
das oben haut nicht hin ,...das is dann kein string mehr...
Das ist ja auch der String an sich. Und nicht, wie du ihn in C# reinschreibst 😃
Alle Zeichen, die escaped werden müssen, müssen natürlich escaped werden. Sollte dann so aussehen:
string pattern = "\"([^\"]|(?<=\\\\)\")*\"";
Eure beiden Varianten (von vbprogger wie auch von txt2re) haben probleme, wenn innerhalb des zu erfassenden Strings escapede " vorkommt.
Deshalb das obige Pattern, was zwischen zwei Anführungszeichen entweder ein Nicht-anführungszeichen [^"] erwartet, oder aber ein Anfürhungszeichen mit vorhergehendem Backslash (?≤\)". (mittels positive look-behind).
Aber wie gesagt, man müsste es noch um raw-strings mit @ davor erweitern.
beste Grüße
zommi
PS: wenn es nicht nur ums Syntax-Highlighten geht, sondern du wirklich den gefundenen String haben möchtest, musst du natürlich die escapeden Zeichen selber umwandeln
Eure beiden Varianten (von vbprogger wie auch von txt2re) haben probleme, wenn innerhalb des zu erfassenden Strings escapede " vorkommt.
Das hat Ploetzi nicht verlangt, außerdem etwas sollte er auch tun 😃
**:::
Das hat Ploetzi nicht verlangt
... najaaaa aber wer String-Literale aus ner C#-Datei auslesen will, der sollte schon damit rechnen, dass da Escape-Sequenzen enthalten sind.
(spätestens wenn man den Regex-Code auf die eigene Code-Datei anwendet 😄)
außerdem etwas sollte er auch tun
Nagut, da sind wir uns einig 🙂
Deshalb verrat ich auch nicht, dass er einfach ein @+ vor das Ausdruck stellen muss, um auch die verbatim-string-Literale (hab grad nachgeguckt, so heißen die offiziell) zu erfassen. 😉
viele Grüße
zommi
Hallo zusammen,
da muss man noch auf etwas mehr aufpassen, z.B. (vereinzelte) Anführungszeichen in Kommentaren und Anführungszeichen in einem Charakter-Literal. Mir Regex alleine wird das m.E. nichts.
herbivore