Also ich hab das Problem schon etwas länger, hab mich aber bis dahin nichtmehr damit beschäftigt weils einfach mir zu frustrierend war eine Lösung zu suchen.
Ich lese den Quellcode einer Seite aus und möchte aber nur zwischen einem String das als Variable bzw Array gespeichert haben, so wie es Mr. Rattelz in sein Ruby Bot gemacht hat;
Code:
if line=~/onmouseover="linfo\('(.*?)',document.getElementById\('t(.*?)'\).innerHTML/i
@plants[$2]=$1;
puts "#{$1} = #{$2}"
end
Zu dem Problem wurden mir bisher viele Vorschläge für Funkionen unterbreitet, aber ich bin anscheinend auf dem falschen Weg oder ich mache immer was falsch. Es wäre nett wenn jemand die richtige Funktion dafür kennt und mir erklären könnte wie das nun geht.
Ich lese den Quellcode einer Seite aus und möchte aber nur zwischen einem String das als Variable bzw Array gespeichert haben, so wie es Mr. Rattelz in sein Ruby Bot gemacht hat;
Ähm, entweder bin ich blöd oder dein Satz ist etwas Twisted ^^
Wie soll etwas zwischen einem String sein oO?
Oder meinst du das du einen String der von bestimmten Strings umschlossen wird speichern willst?
Ähm, entweder bin ich blöd oder dein Satz ist etwas Twisted ^^
Wie soll etwas zwischen einem String sein oO?
Oder meinst du das du einen String der von bestimmten Strings umschlossen wird speichern willst?
Ja genau entschuldigung
Also so in der Art; Im Quelltext ist z.B folgendes enthalten
[...]
<b>News Überschrift: "Die Kleine Waldfee"</b>
[...]
Ich möchte Die Kleine Waldfee aber in eine Variable gespeichert haben z.B einem Array. In PHP mache ich das dann so:
Somit wird mir das was als (.*?) da stand durch Die Kleine Waldfee ersetzt und im Array $titel[0] gespeichert.
Hoffe das war jetzt so verständlich Ich hab bisher zu sowas nur tutorials oder snippets gesehen die sich anscheinend intensiv mit Regex beschäftigt haben, finde ich aber schwachsinnig wenn der Inhalt immer gleich ist bzw das Schema.
Somit wird mir das was als (.*?) da stand durch Die Kleine Waldfee ersetzt und im Array gespeichert.
Hoffe das war jetzt so verständlich Ich hab bisher zu sowas nur tutorials oder snippets gesehen die sich anscheinend intensiv mit Regex beschäftigt haben, finde ich aber schwachsinnig wenn der Inhalt immer gleich ist bzw das Schema.
using System.Text.RegularExpressions;
...
...
string bla = "halloe\nfdsasd\n\nff\n<b>News Überschrift: "hohoho"</b>\nbla";
Match m = Regex.Match(bla,"<b>News Überschrift: \"(.*?)\"</b>",RegexOptions.IgnoreCase | RegexOptions.MultiLine);
if ( m.Success) console.writeline(m.groups[1].value + " <---- D;");
...
...
Wenn du viel mit dem selben regex suchen willst, bietet es sich an die option RegexOptions.Compiled zu setzten. Damit dauert das instanziieren des Regex Objekts zwar etwas länger, aber dafür geht das Matchen schneller.
ach und wenn du viel an strings veränderst benutz nen Stringbuilder, ist das gleiche wie ein string nur das man ihn verändern kann ohne das neue Strings erzeugt werden, das kann viel Speicher sparen.
ach und wenn du viel an strings veränderst benutz nen Stringbuilder, ist das gleiche wie ein string nur das man ihn verändern kann ohne das neue Strings erzeugt werden, das kann viel Speicher sparen.
StringBuilder blub = new StringBuilder();
blub="Hallo";
Console.WriteLine(blub);
blub.Append(" Welt."); /* bei einem Normalen String würde hier jetzt nur eine Kopie des Strings verändert, hier wird der Inhalt des Orginalen StringBuilder verändert, also verbleiben keine Alten strings mehr im Speicher*/
Console.WriteLine(blub);
Der String Builder ist ein Object das so änlich ist wie ein Stringobject, bzw sich genau so verhält bist auf den Unterschied das bei Modifikationen keine Kopien des Strings angelegt werden.
StringBuilder hat auch ein paar eigene Methoden:
Chars: Indexer
Lenght: setzt oder ruft die länge des stringbuilders ab
Append(): Eine Überladene Public Method die einen String an das Ende des Stringbuilders anhängt
AppendFormat(): Das gleiche wie Append nur das man den String formatieren lassen kann
Ja die Methoden sind die geleichen wie bei einem String Object, ist halt sinnvol das zu verweden wenn du viele änderungen an strings durchführst.
Und nen Link hab ich gerade keinen, müsste bei msdn documentiert sein.
Der genaue Klassen Name ist System.Text.StringBuilder
StringBuilder blub = new StringBuilder();
blub="Hallo";
Console.WriteLine(blub);
blub.Append(" Welt."); /* bei einem Normalen String würde hier jetzt nur eine Kopie des Strings verändert, hier wird der Inhalt des Orginalen StringBuilder verändert, also verbleiben keine Alten strings mehr im Speicher*/
Console.WriteLine(blub);
Der String Builder ist ein Object das so änlich ist wie ein Stringobject, bzw sich genau so verhält bist auf den Unterschied das bei Modifikationen keine Kopien des Strings angelegt werden.
StringBuilder hat auch ein paar eigene Methoden:
Chars: Indexer
Lenght: setzt oder ruft die länge des stringbuilders ab
Append(): Eine Überladene Public Method die einen String an das Ende des Stringbuilders anhängt
AppendFormat(): Das gleiche wie Append nur das man den String formatieren lassen kann
Ja die Methoden sind die geleichen wie bei einem String Object, ist halt sinnvol das zu verweden wenn du viele änderungen an strings durchführst.
Und nen Link hab ich gerade keinen, müsste bei msdn documentiert sein.
Der genaue Klassen Name ist System.Text.StringBuilder
Ich werds mal ausprobieren wenn ich das nächstesmal wieder C# offen habe, danke