如何使用VB.NET统计文本框内相同字符串值的解决方案
VB.NET 统计文本框指定字符串出现次数的修复方案
原有代码核心问题
- 存在死循环风险:
While循环判断文本框内容固定的情况下会无限执行,直接卡住程序进程 - 累加语法错误:
Dcount = +1等价于直接给Dcount赋值为1,无法实现计数累加效果,正确累加语法为Dcount += 1 - 逻辑不符合需求:现有逻辑不是统计文本内容命中的次数,而是只要文本匹配就不停循环执行计数,没有绑定文本内容更新的触发时机
正确实现方案
你需要把计数变量定义为窗体全局变量,然后监听文本框的TextChanged事件,每次文本更新时判断是否命中目标值,再执行计数逻辑,示例代码如下:
' 首先在窗体类中定义全局计数变量,避免每次调用方法重置数值 Dim Dcount As Integer = 0 ' 绑定txtb_Win的TextChanged事件,每次文本内容修改时触发 Private Sub txtb_Win_TextChanged(sender As Object, e As EventArgs) Handles txtb_Win.TextChanged ' 判断当前文本是否匹配目标值 If txtb_Win.Text = "YOU WIN" OrElse txtb_Win.Text = "AI WIN" Then Dcount += 1 ' 命中3次时显示按钮 If Dcount >= 3 Then btn_duterte.Visible = True ' 可选:如果需要计数满3次后重置,可取消注释下一行 ' Dcount = 0 End If End If End Sub
可选扩展功能
如果需要统计整个文本框内容里某个字符串的出现次数(比如文本框有多行内容,要统计"YOU WIN"总共出现多少次),可以用下面的方法:
Public Function CountStringOccurrence(sourceStr As String, targetStr As String) As Integer If String.IsNullOrEmpty(sourceStr) OrElse String.IsNullOrEmpty(targetStr) Then Return 0 End If Return (sourceStr.Length - sourceStr.Replace(targetStr, "").Length) / targetStr.Length End Function ' 调用示例,统计txtb_Win中"YOU WIN"的出现次数 Dim winCount As Integer = CountStringOccurrence(txtb_Win.Text, "YOU WIN")
内容的提问来源于stack exchange,提问作者Jerald Jose
相关产品推荐
相关产品推荐

