bbuild Geschrieben 21. September 2011 Geschrieben 21. September 2011 Hallo, kennt jemand den Code oder die Methode mit der man in vb.net einen Text durch einen String durchsuchen kann? z. B. : Text : "Das Fachinformatiker forum ist toll und so weiter ..." Suchtext : " toll" Ergebnis wäre dann 1 mal gefunden und weis jemand wie man alles nach diesem toll ausgeben kann? Wenn möglich ohne Split^^ Danke im Voraus. MFG Zitieren
Gateway_man Geschrieben 21. September 2011 Geschrieben 21. September 2011 (bearbeitet) Wenn du nur wissen willst wie oft der text vorkommt dann kannst du es so machen. Bin mir nicht ganz sicher ob du die jeweiligen startindexe haben willst oder nur die anzahl..... Dim input as string = "Das Fachinformatiker forum ist toll und so weiter ..." Dim matches As MatchCollection = Regex.Matches(input, "toll") Dim anzahl as int = matches.Count lg Gateway Bearbeitet 21. September 2011 von Gateway_man Zitieren
Gurki Geschrieben 22. September 2011 Geschrieben 22. September 2011 Dim line As String = "Das Fachinformatiker forum ist toll und so weiter ..." If line.Contains("toll") = True Then 'Mach was End If Nicht ausprobiert!! Kann auch sein, dass das nur im StreamReader funktioniert! Zitieren
a3quit4s Geschrieben 22. September 2011 Geschrieben 22. September 2011 Dim line As String = "Das Fachinformatiker forum ist toll und so weiter ..." If line.Contains("toll") = True Then 'Mach was End If Es funktioniert, aber If line.Contains("toll") = True ist schlechter Stil. Contains liefert bereits einen boolschen Wert zurueck. Zitieren
bbuild Geschrieben 22. September 2011 Autor Geschrieben 22. September 2011 ok danke funktioniert soweit (: , habe nun noch ein problem ^^ und zwar lese ich den text aus einer xml datei aus und in ihr sind bestimmte "<tags>" deren Inhalt ich filtern möchte. Kann mir jemand sagen wie ich nach diesen am besten Filtere ? Ich hatte zuerst an Split gedacht aber das kommt mir ein bisschen umständlich vor. gibt es vil. eine andere Methode? z. B. : wenn ich folgenden xml code habe : (er steht eig. in 1-2 zeilen aber habe ihn zur übersichtlichkeit in mehrere Zeilen eingeteilt) Gesucht werden soll nach dem Inhalt des tags : "<Test> <Info> <test> <Zeit 09:32:06>Mit welcher Methode das wohl funktionieren wird=?</Zeit 09:32:06> <Zeit 09:32:06>HILFEEEE! </Zeit 07:32:06> <Zeit 09:32:06>Test Text</Zeit 07:32:06> </test> <test> <Zeit 09:32:06>Mit welcher Methode das wohl funktionieren wird=?</Zeit 09:32:06> <Zeit 09:32:06>HILFEEEE! </Zeit 07:32:06> <Zeit 09:32:06>Test Text</Zeit 07:32:06> </test> <test> <Zeit 09:32:06>Mit welcher Methode das wohl funktionieren wird=?</Zeit 09:32:06> <Zeit 09:32:06>HILFEEEE! </Zeit 07:32:06> <Zeit 09:32:06>Test Text</Zeit 07:32:06> </test> </Info> Ausgegeben werden soll von allen 3 test tags die Zeit und die Meldung. Danke im vorraus. mfg Zitieren
a3quit4s Geschrieben 23. September 2011 Geschrieben 23. September 2011 Nimm die Klasse, die dafuer designed wurde: XmlDocument. Wie man sie benutzt findest du in der MSDN. Zitieren
Gooose Geschrieben 23. September 2011 Geschrieben 23. September 2011 Mit Hilfe von XmlNode.SelectNodes kannst du deine Elemente auswählen. Die XPath-Beispiele können dir bei der Adressierung helfen. Zitieren
HJST1979 Geschrieben 23. September 2011 Geschrieben 23. September 2011 Hallo ich gebe dir nur ein paar Begriffe, die kannst dann Googeln . Weil willst ja nix vorgekaut bekommen sondern es verstehen XMLDocument.Load XMLDocument.DocumentElement.ChildNodes XMLNode.ChildNodes XMLNode.Name XMLNode.Attributes XMLNode.InnerText XMLNode.OuterText XMLAttribute.Name Damit solltest du weiter kommen Gruß Hans-Jörg P.S. Gibt auch ein Galileo OpenBook zu VB.NET (evtl. auch C#) da sind auch XML- Beispiele dabei Zitieren
Gurki Geschrieben 23. September 2011 Geschrieben 23. September 2011 Schau dir das mal an: C# foreach (XElement item in xDoc.Element("DATASET").Element("TABLE").Element("LINE").Elements()) { if (item.Attribute("NAME").Value.Equals("NUM")) { sDescription = ((XElement)item.LastNode).Value; } } VB.Net: For Each item As XElement In xDoc.Element("DATASET").Element("TABLE").Element("LINE").Elements() If item.@NAME = "NUM" Then sDescription = DirectCast(item.LastNode, XElement).Value End If Next Versuchs mal Zitieren
bbuild Geschrieben 26. September 2011 Autor Geschrieben 26. September 2011 Vielen dank für die Hilfe von euch allen (: Habe es nun Hinbekommen. Für alle die noch Suchen und nicht drauf kommen wie man weiter in die Knoten kommt Hier mein Code : Dim XML As XmlDocument = New XmlDocument() Dim ni, nl As Integer XML.Load("Dateipfad") Dim np As Integer ni = XML.DocumentElement.ChildNodes(0).ChildNodes.Count 'Parent Knoten For np = 0 To XML.DocumentElement.ChildNodes.Count - 1 '4 Oberknoten For ni = 0 To XML.DocumentElement.ChildNodes(np).ChildNodes.Count - 1 'Teil schleife 'Unterknoten Ebene 1 'MsgBox(XML.DocumentElement.ChildNodes(np).ChildNodes(ni).Name) If XML.DocumentElement.ChildNodes(np).ChildNodes(ni).Name = "Fehler" Then MsgBox(XML.DocumentElement.ChildNodes(np).ChildNodes(ni).Name, MsgBoxStyle.Critical) For nl = 0 To XML.DocumentElement.ChildNodes(np).ChildNodes(ni).ChildNodes.Count - 1 ' Unterknoten Ebene 2 MsgBox(XML.DocumentElement.ChildNodes(np).Name) MsgBox(XML.DocumentElement.ChildNodes(np).ChildNodes(ni).ChildNodes(nl).InnerText) Next nl End If Next ni Next np End Function Zitieren
HJST1979 Geschrieben 27. September 2011 Geschrieben 27. September 2011 Für alle die noch Suchen und nicht drauf kommen wie man weiter in die Knoten kommt Hier mein Code : Schau dir mal an wie eine Rekursion funktioniert, ist hier sinnvoll, da flexibler Zitieren
Sacaldur Geschrieben 27. September 2011 Geschrieben 27. September 2011 (bearbeitet) das eigentliche Problem ist zwar gelöst, aber ich möchte dennoch auf einen Fehler hinweisen der XML-Code ist nicht valide, da "Zeit 09:32:06" keinen gültigen Tagnamen darstellt (ungültige Zeichen) zudem sollte der Name abhängig von dem zu speichernden Inhalt zu wählen sein (du willst in deinem Fall keine Zeiten speichern, sondern anscheinend Nachrichten, zu denen eine Zeitangabe dazu gehört) und die tagnamen sollten nicht beliebig erweiter werden, bzw. es sollten keine Werte mit Hilfe von tagnamen gespeichert werden (dafür eignen sich Attribute oder weitere tags) da du anscheinend nachrichten speichern willst, solltest du deine Tags ungefähr so aufbauen <nachricht zeit="09:32:06">Dies ist eine Nachricht!</nachricht> (die Namen der Tags und Attribute können selbstverständlich frei gewählt werden) Edit: weiterhin sollte man eine durchgängig einheitliche Groß- und Kleinschreibung verwenden (entweder fangen alle tags mit einem großen Buchstaben an oder es fangen alle mit einem kleinen Buchstaben an) es ist zwar auch möglich, je nach Zusammenhang entweder mit großen oder mit kleinem Buchstaben anzufangen, allerdings kann dies zu Fehlern führen, wenn man später beim schreiben einer XML-Datei durcheinander kommt Bearbeitet 27. September 2011 von Sacaldur Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.