| |
VB.NET - Ein- und Umsteigerarray oder richtextbox als Quelle | | | Autor: Jeffreys2 | Datum: 18.12.12 00:41 |
| Hallo, nun hab ich mich mal Angemeldet für eine Frage.
Also, das Programm läd eine Textdatei(viel inhalt) in eine richtextbox oder array , und es soll ndie richtextbox oder array , nun als Quelle benutzten , Z.B. um doppelte einträge zu zählen.Da aber immer eine datei eingeladen wird, müste man das doch so machen ..
Im Detail
'richtextbox1 Quelle
Dim text As String = "hi hi hi hi hi" 'Der inhalt in dem "gesucht" werden soll.
'er soll hier aber den Inhalt der richtextbox1 benutzen
Dim searchTerm As String = "hi" ' der inhalt der "durchsucht" werden soll.
'er soll hier auch den Inhalt der richtextbox1 benutzen
Dim dataSource As String() = text.Split(New Char() {" ", ",", ".", ";", _
":"},
StringSplitOptions.RemoveEmpty_
Entries)
Dim matchQuery = From word In dataSource
Where word.ToLowerInvariant() = _
searchTerm.ToLowerInvariant()
Select word
Dim count As Integer = matchQuery.Count()
RichTextBox2.Text = searchTerm & count
' Ergebniss >>>>> hi 6 mhh ich weis nicht ob das so klappt.Geschwindigkeit is mir egal, ist nur ein Tool. Soll nur Funktionieren. | |
Re: array oder richtextbox als Quelle | | | Autor: Manfred X | Datum: 18.12.12 06:21 |
| Hallo!
Nutze die IDE-Einstellung "Option Strict On"
(Kontrolle der Deklaration und Zuweisung von Datentypen).
Lade Deinen Text zunächst in ein Textsystem und verwende
die Rechtschreibkorrektur, damit es beim Wortzählen nicht
zu Fehlern kommt.
Wenn Du den Text aus einer Datei in ein RichtextBox-Control
lädst, kannst Du die Find-Funktion dieses Controls nutzen.
Mit den geeigneten Parametern aufgerufen und in einer
Schleife verpackt, kann man damit Worte zählen.
Dim Richtextbox1 As New RichTextBox
Richtextbox1.LoadFile("Pfad/Name der RTF Datei")
Dim searchTerm As String = "Regelung"
Dim anz As Integer = CountWord(richtextbox1.Text, searchTerm)
Dim wordindex As Integer = -1, counter As Integer = 0
Do
wordindex = Richtextbox1.Find_
(searchTerm, wordindex + 1, RichTextBoxFinds.WholeWord)
If Not wordindex = -1 Then
Richtextbox1.SelectionStart = wordindex
counter += 1
End If
Loop While Not wordindex = -1 .
.
Es geht auch auf die Weise, die Du bereits vorgeschlagen hast.
Allerdings sind neben den Zeichen, die ein Wort-Ende
anzeigen ("splitchars") vielleicht noch diverse Zeichen
relevant, die zunächst am Wortanfang/-ende entfernt werden
müssen ("trimchars"). Etwa so ....
Public Function CountWord(ByVal text As String, _
ByVal wordtocount As String) As Integer
If String.IsNullOrWhiteSpace(text) Then Return -1
If String.IsNullOrWhiteSpace(wordtocount) Then Return -1
wordtocount = GetWord(wordtocount)
Dim splitchars As String = " ,;.:?!"
Dim dataSource As String() = _
text.Split(splitchars.ToArray, _
StringSplitOptions.RemoveEmptyEntries)
Dim matchquery As IEnumerable(Of String) = _
From word As String In dataSource _
Where String.Compare(GetWord(word), wordtocount, True) = 0
Return matchquery.Count()
End Function
Private Function GetWord(ByVal word As String) As String
If String.IsNullOrWhiteSpace(word) Then Return String.Empty
Dim trimchars As String = "<>[]{}()+-*/\|@#"
word = word.Trim(trimchars.ToArray)
Return word
End Function Anwendung:
Dim anz As Integer = CountWord(Richtextbox1.Text, searchTerm) Zu beachten: Die beiden Versionen liefern nicht in allen Fällen
identische Ergebnisse (Zeichenlisten ggf. anpassen).
RTF.Find verwendet z.B. "-" als Trennzeichen.
MfG
Manfred | |
Re: array oder richtextbox als Quelle | | | Autor: Jeffreys2 | Datum: 18.12.12 11:06 |
| Klappt leider nichts, da sind zu viele Fehler,und die verstehe ich nicht, um diese zu beheben.
Aber immerhin habe ich schonmal,
'Datei öffnen , laden
Using OpenFileDialog1 As New OpenFileDialog
OpenFileDialog1.InitialDirectory = Application.StartupPath
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim lines() As String = System.IO.File.ReadAllLines( _
OpenFileDialog1.FileName, System.Text.Encoding.Default) _
'Umlaute Aktivieren[System.Text.Encoding.Default] 2/3
'Reader.Items.Clear()
For Each line As String In lines
Dim Split() As String = line.Split()
Dim saubermachen As New ListViewItem(New String() {Split( _
0), Split(1), Split(2)}) 'Umlaute
' Aktivieren[System.Text.Encoding.Default] 2/3
'Datei Lesen
c.AppendText(line) 'einfügen
Next
'Jetzt erst Säubern, [ist schneller]
Dim line1 As String = "-,_|~:#12345678910."
c.Text = Regex.Replace(c.Text, line1 & "\t]+|[" & line1 & _
"\t]+", String.Empty, RegexOptions.Multiline) 'zahlen
' Entfernen
ToolStripStatusLabel2.Text = "Geöffnete Liste: " & _
OpenFileDialog1.SafeFileName
'wir haben eine Saubere richtextbox1 mit Wörtern drin, jetzt
' verwenden wir sie als Such Quelle.
'soon
End If
End Using
End Sub Ladet nur bei Textdatein mit dieser Struktur
2012.12.08 22:45:50 - Balbalba - balbalbalba
Beitrag wurde zuletzt am 18.12.12 um 11:18:24 editiert. | |
Re: array oder richtextbox als Quelle | | | Autor: Jeffreys2 | Datum: 19.12.12 12:35 |
| DateiOrt nachfrage.Datei Einlesen so wie Sie ist.
'Datei öffnen , laden
Using OpenFileDialog1 As New OpenFileDialog
OpenFileDialog1.InitialDirectory = Application.StartupPath
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim lines() As String = System.IO.File.ReadAllLines( _
OpenFileDialog1.FileName, System.Text.Encoding.Default)
Dim myReader As StreamReader
myReader = New StreamReader(OpenFileDialog1.FileName, _
System.Text.ASCIIEncoding.Default)
c.AppendText(myReader.ReadToEnd)
RegexOptions.Multiline)
End If
End Using
Beitrag wurde zuletzt am 19.12.12 um 12:47:29 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|