You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:39:02