首页 > 解决方案 > 在 RichTextBox 中搜索特定字符的第一次出现返回 -1

问题描述

我只是想找到当前行的第一个空格的位置索引。

我编写的代码仅适用于整个richtextbox 中的第一个空格,但是如果我尝试获取以下空格的位置索引(同一行或以下行),我总是得到-1,我不知道为什么。

我一直在阅读以下文档: MSDN 文档链接

我使用了Find(Char[], Int32)选项,方式如下:

RTB1.Find(CChar(" "), RTB1.GetFirstCharIndexOfCurrentLine)

问题是当我尝试在第一个之后检测以下一个空格时,我得到 -1。如果我使用该代码检测第一行的第一个空格,我会得到 6 作为结果(这是正确的)。但是对于以下空格,我总是得到-1,即使它是第一行或以下几行。

标签: vb.netwinformsvisual-studio-2013richtextbox

解决方案


此代码将一次性为您提供所有空格字符的索引:

Dim index = RichTextBox1.Find({" "c})

Do Until index = -1
    MessageBox.Show(index.ToString())

    index = RichTextBox1.Find({" "c}, index + 1)
Loop

如果您想一次获得一个,那么您想要的是这样的:

Private index As Integer = -1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    index = RichTextBox1.Find({" "c}, index + 1)

    If index = -1 Then
        MessageBox.Show("No more spaces")
    Else
        MessageBox.Show(index.ToString())
    End If
End Sub

推荐阅读