在 RichTextBox returns -1 中搜索第一次出现的特定字符

Search first ocurrence of specific character in RichTextBox returns -1

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

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

我一直在阅读以下文档: MSDN documentation link

并且我使用了 Find(Char[], Int32) 选项,如下所示:

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

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

试试这个。

Dim last = Me.rtb.Find(New Char() {" "}, Me.rtb.GetFirstCharIndexOfCurrentLine)

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

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