Zum Inhalt springen

Vb.net Text Suchen


Empfohlene Beiträge

Geschrieben

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

Geschrieben (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 von Gateway_man
Geschrieben

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!

Geschrieben
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.

Geschrieben

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

Geschrieben

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

Geschrieben

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 :)

Geschrieben

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

Geschrieben (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 von Sacaldur

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...