[C#.NET]

05/15/2008 00:31 Atheuz#1
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.
05/15/2008 00:35 Atheuz#2
Ich kann den Beitrag garnicht mehr editieren. Ich hab die blöde Überschrift vergessen ;_;
05/16/2008 11:21 Bot_interesierter#3
Quote:
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?
05/16/2008 16:22 mondesser#4
kann mich dem bot interesierten nur anschließen, verstehe die frage nicht :)
05/16/2008 16:54 x]vIrus[x#5
komm ma in #elitepvpers @ quakenet
05/16/2008 18:23 Atheuz#6
Quote:
Originally Posted by Bot_interesierter View Post
Ä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:

preg_match('|<b>News Überschrift: "(.*?)"</b>|', $file, $titel);

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.
05/17/2008 02:24 x]vIrus[x#7
Quote:
Originally Posted by Atheuz View Post
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:

preg_match('|<b>News Überschrift: "(.*?)"</b>|', , );

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;");
...
...

so in der art ^^
05/17/2008 14:01 mondesser#8
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.
05/17/2008 16:47 Atheuz#9
Danke euch beiden, hat wunderbar geklappt. ;)
05/17/2008 22:12 Bot_interesierter#10
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.
05/18/2008 00:31 Atheuz#11
Quote:
Originally Posted by Bot_interesierter View Post
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.
Beispiel? Link?
05/18/2008 01:32 Bot_interesierter#12
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
05/18/2008 22:51 Atheuz#13
Quote:
Originally Posted by Bot_interesierter View Post
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 ;)