Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 文本分割问题_.net_Vb.net - Fatal编程技术网

.net 文本分割问题

.net 文本分割问题,.net,vb.net,.net,Vb.net,我有一个程序,可以扫描textbox1文本,并显示textbox1中的所有单词,这些单词在textbox2中的长度超过n个字母。以下是完整的代码: Private Function filterWords(ByVal minLenght As Short, ByVal input As String) As List(Of String) Dim strInput() As String = input.Split(" ") Dim strList As New

我有一个程序,可以扫描textbox1文本,并显示textbox1中的所有单词,这些单词在textbox2中的长度超过n个字母。以下是完整的代码:

Private Function filterWords(ByVal minLenght As Short, ByVal input As String) As List(Of String)
        Dim strInput() As String = input.Split(" ")
        Dim strList As New List(Of String)
        strList = strInput.ToList()

        For Each word In strInput
            If word.Length < minLenght Then
                strList.Remove(word)
            End If
        Next
        Return strList
    End Function

    Private Sub textbox1_TextChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.TextChangedEventArgs) Handles textbox1.TextChanged
        textbox2.Text = ""
        Dim strOut As New List(Of String)

        strOut = filterWords(4, textbox1.Text)

        For Each w In strOut
            textbox2.Text += w & " "
        Next
    End Sub
Private Function filterWords(ByVal minlength为短,ByVal input为字符串)作为(字符串的)列表
Dim strInput()作为字符串=input.Split(“”)
Dim strList作为新列表(字符串)
strList=strInput.ToList()
每一个字都有一条横线
如果单词长度<最小长度,则
strList.Remove(word)
如果结束
下一个
返回strList
端函数
私有子textbox1_TextChanged(ByVal sender作为对象,ByVal e作为System.Windows.Controls.TextChangedEventArgs)处理textbox1.TextChanged
textbox2.Text=“”
Dim strOut作为新列表(字符串)
strOut=filterWords(4,textbox1.Text)
对于每个w英寸的strOut
textbox2.Text+=w&“
下一个
端接头

例如,如果您键入a b c d,它将不会在textbox2中显示任何内容,但如果您键入a,然后按enter键,然后按b键,它将同时显示两者。我应该写些什么来避免这种情况呢?

这实际上取决于你如何定义一个词。您当前的实现定义了空格表示单词的结尾。您只需将空格传递给
input.Split
,即可定义此操作。如果还想定义句点(.)以单词结尾,请添加它:
input.Split(“.”

如果要使单词以新行结尾,请添加它:
input.Split(“.”&Environment.NewLine.ToString())

另一种方法是使用正则表达式,可能如下所示:

Private Function filterWords(ByVal minLength As Short, ByVal input As String) _
    As List(Of String)

    Dim strList As New List(Of String)
    Dim wordMatches = Regex.Matches(input, "\w+").Cast(Of Match)
    For Each wordMatch In wordMatches
        If wordMatch.Value.Length >= minLength Then
            strList.Add(wordMatch.Value)
        End If
    Next
    Return strList

End Function

不完全确定我是否理解,如果您键入一个b c d,那么textbox2中将不会显示任何内容,因为所有的单词都小于所需的长度,即4?除非b c d是长度可能大于4的示例单词,否则我看不出有任何错误?您希望在用户键入时发生这种情况,还是在用户完成键入后发生这种情况?i、 e.如何获取正则表达式?我应该导入什么?
导入System.Text.RegularExpressions