|
You last visited: Today at 06:06
Advertisement
[C#.NET]
Discussion on [C#.NET] within the .NET Languages forum part of the Coders Den category.
05/15/2008, 00:31
|
#1
|
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
|
[C#.NET]
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
|
#2
|
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
|
Ich kann den Beitrag garnicht mehr editieren. Ich hab die blöde Überschrift vergessen ;_;
|
|
|
05/16/2008, 11:21
|
#3
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
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
|
#4
|
elite*gold: 0
Join Date: Oct 2005
Posts: 201
Received Thanks: 23
|
kann mich dem bot interesierten nur anschließen, verstehe die frage nicht
|
|
|
05/16/2008, 16:54
|
#5
|
elite*gold: 37
Join Date: Apr 2004
Posts: 2,154
Received Thanks: 250
|
komm ma in #elitepvpers @ quakenet
|
|
|
05/16/2008, 18:23
|
#6
|
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
|
Quote:
Originally Posted by Bot_interesierter
Ä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
|
#7
|
elite*gold: 37
Join Date: Apr 2004
Posts: 2,154
Received Thanks: 250
|
Quote:
Originally Posted by Atheuz
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
|
#8
|
elite*gold: 0
Join Date: Oct 2005
Posts: 201
Received Thanks: 23
|
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
|
#9
|
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
|
Danke euch beiden, hat wunderbar geklappt.
|
|
|
05/17/2008, 22:12
|
#10
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
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
|
#11
|
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
|
Quote:
Originally Posted by Bot_interesierter
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
|
#12
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
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
|
#13
|
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
|
Quote:
Originally Posted by Bot_interesierter
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
|
|
|
All times are GMT +1. The time now is 06:08.
|
|