在RichTextBox中搜索特定字符的第一个匹配项会返回-1

时间:2018-11-04 06:19:31

标签: vb.net winforms visual-studio-2013 richtextbox

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

我编写了仅对整个Richtextbox中的第一个空格有效的代码,但是如果我尝试获取以下空格的位置索引(同一行或以下各行),则总会得到- 1,我不知道为什么。

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

我已经通过以下方式使用了 Find(Char [],Int32)选项:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试一下。

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