计算在文本框中所有出现的vbCrLf

问题描述 投票:0回答:2

我有一个TextBox,我试图计算所有出现的vbCrLf

计数正在起作用,问题是每次发布vbCrLf时我想从某个整数中减去33。

现在编写的代码仅减去vbCrLf的数字,而不减去数字+ 33。

问题是每次按下Enter键并发出vbCrLf时如何减去33?]] >>

下面的代码是借口,我已尝试了更多SO帖子,而不是我愿意承认的所有注释掉的代码:

Private Sub tbHaveOne_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbHaveOne.TextChanged
    Dim spaceCount As Integer
    Dim lettercount As Integer
    Dim carreturn As Integer
    spaceCount = 0
    lettercount = 0
    carreturn = 0

    Dim s As String = tbHaveOne.Text
    For Each c As Char In s
        If c = " " Then
            spaceCount += 1
        Else
            lettercount += 1
        End If
    Next
    'Dim j As Integer = s.Count(Function(c As Char) c = vbCrLf)
    'j = j + 33
    For Each cr As Char In tbHaveOne.Text
        Static rex As New System.Text.RegularExpressions.Regex(vbCrLf, System.Text.RegularExpressions.RegexOptions.Compiled Or System.Text.RegularExpressions.RegexOptions.Multiline)

        carreturn = (rex.Matches(tbHaveOne.Text).Count).ToString()
        carT = carreturn + 33
    Next
    'For Each cr As Char In s
    '    If cr(vbCrLf) Then
    '        carreturn += 1
    '        'carT = carreturn + 33
    '    End If
    'Next
    'total = cD - ((lettercount + spaceCount) - carT)

    total = cD - lettercount
    total = total - spaceCount
    total = total - carT
    'total = total - j

    tbHaveTwo.Text = "SC " & spaceCount & " " & "LC " & lettercount & " CR " & carreturn & " T " & total

    'Static rex As New System.Text.RegularExpressions.Regex("\b", System.Text.RegularExpressions.RegexOptions.Compiled Or System.Text.RegularExpressions.RegexOptions.Multiline)

    'tbHaveTwo.Text = (rex.Matches(tbHaveOne.Text).Count / 2).ToString()

End Sub
            

我有一个TextBox,我试图计算所有出现的vbCrLf。计数工作正常,问题是每次发出vbCrLf时,我想从某个Integer中减去33。代码...

vb.net textbox counter
2个回答
0
投票

您不能检查当前字符是否为vbcrlf,因为CRLF是两个字符。只需检查LF,这样一来,如果您曾经在unix系统准备的文件上使用逻辑,它仍然可以工作(unix具有LF,Windows具有CRLF)

Private Sub tbHaveOne_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbHaveOne.TextChanged
    Dim spaceCount = 0
    Dim letterCount = 0
    Dim lineCount = 0



    For Each c As Char In tbHaveOne.Text
        If Char.IsWhitespace(c) Then
            spaceCount += 1
        Else If Char.IsLetterOrNumber(c) 
            letterCount += 1
        Else If c = vbLf
            lineCount += 1
        End If
    Next c

    someInteger -= (lineCount * 33)

0
投票

TextBox.Lines.Count返回用换行符分隔的行数(当您按Enter

© www.soinside.com 2019 - 2024. All rights reserved.