我有TextBox
,其中包含更多字词
示例:
我 pRoFeSSoinaL 编码器
我想搜索单词 pRoFeSSoinaL (包含大写和小写字母),然后将其替换。
答案 0 :(得分:1)
好的,让我尝试根据您的图片再次解决您的问题:
关于你的评论:
...但是我需要搜索关于单词有多个字母更改的例子(执行,执行,执行,执行........ ETC)我需要找到的单词无论字母多大小看到这个证据
同样,如果我有这个权利,你想要找到所有出现的单词而不管它是什么情况。实际上,您希望您的应用程序有点像记事本。
我已经汇总了一些将使用以下方法的代码:
返回此字符串的副本,转换为小写。
在文本框中选择一系列文字。
返回一个新字符串,其中删除了从指定位置开始的当前实例中指定数量的字符。
返回一个新字符串,在该字符串中,在此实例中的指定索引位置插入指定的字符串。
从此实例中检索子字符串。子字符串从指定的字符位置开始,并具有指定的长度。
我有三个Button
控件,我已经放了一些代码。一个人会发现一个单词的下一个出现,另一个将替换一个单词的下一个出现,而最后一个将替换一个单词的所有出现。
现在设计你的应用程序不是我的工作,但为了方便起见,我还提供了三个TextBox
控件。这就是我的表单的外观:
要查找professional
的下一次出现,这是我使用的代码:
Private Sub btnFindNext_Click(sender As Object, e As EventArgs) Handles btnFindNext.Click
'check word exists
If txtTextToSearch.Text.ToLower().Contains(txtWordToFind.Text.ToLower()) Then
'reset position if at end of text
If txtTextToSearch.Text.ToLower().IndexOf(txtWordToFind.Text.ToLower(), position + 1) < 0 Then
position = 0
End If
'set position of next occurrence
position = txtTextToSearch.Text.ToLower().IndexOf(txtWordToFind.Text.ToLower(), position + 1)
'select next occurrence
txtTextToSearch.Select(position, txtWordToFind.Text.Length)
End If
End Sub
这是单击按钮时的外观截图:
再次单击该按钮将选择下一个单词。在我的例子中,它将继续在两者之间切换。
要替换下一次出现的professional
,这是我使用的代码:
Private Sub btnReplaceNext_Click(sender As Object, e As EventArgs) Handles btnReplaceNext.Click
'check word exists
If txtTextToSearch.Text.ToLower().Contains(txtWordToFind.Text.ToLower()) Then
'reset position if at end of text
If txtTextToSearch.Text.ToLower().IndexOf(txtWordToFind.Text.ToLower(), position + 1) < 0 Then
position = 0
End If
'set position of next occurrence
position = txtTextToSearch.Text.ToLower().IndexOf(txtWordToFind.Text.ToLower(), position + 1)
'remove old word
txtTextToSearch.Text = txtTextToSearch.Text.Remove(position, txtWordToFind.Text.Length())
'insert new word
txtTextToSearch.Text = txtTextToSearch.Text.Insert(position, txtReplaceWith.Text)
End If
End Sub
这是单击按钮时的外观截图:
再次单击该按钮将替换下一个单词。
要替换所有出现的单词professional
,这是我使用的代码:
Private Sub btnReplaceAll_Click(sender As Object, e As EventArgs) Handles btnReplaceAll.Click
'check word exists
If txtTextToSearch.Text.ToLower().Contains(txtWordToFind.Text.ToLower()) Then
'reset position if at end of text
If txtTextToSearch.Text.ToLower().IndexOf(txtWordToFind.Text.ToLower(), position + 1) < 0 Then
position = 0
End If
'set position of next occurrence
position = txtTextToSearch.Text.ToLower().IndexOf(txtWordToFind.Text.ToLower(), position + 1)
While position > 0 AndAlso position < txtTextToSearch.Text.Length
'remove old word
txtTextToSearch.Text = txtTextToSearch.Text.Remove(position, txtWordToFind.Text.Length())
'insert new word
txtTextToSearch.Text = txtTextToSearch.Text.Insert(position, txtReplaceWith.Text)
'set position of next occurrence
position = txtTextToSearch.Text.ToLower().IndexOf(txtWordToFind.Text.ToLower(), position + 1)
End While
End If
End Sub
这是单击按钮时的外观截图:
我的代码需要适应我确定,但它应该给你一些东西继续。至于我去过的详细程度,可能不会让你受益,但可能会让访问这个问题的其他人受益。希望这会有所帮助。
答案 1 :(得分:0)
从屏幕截图(http://i.imgur.com/77wdZoI.png)判断,您似乎是在不区分大小写的字符串匹配之后。
最简单的方法是使用String.IndexOf(String, StringComparison)
overload执行不区分大小写的比较:
Private Function FindText(ByVal Source As String, ByVal Text As String) As Integer
Return Source.IndexOf(Text, StringComparison.OrdinalIgnoreCase)
End Function
用法示例:
Dim TextToFind As String = "professional"
Dim TextPos As Integer = FindText(TextBox1.Text, TextToFind)
If TextPos > -1 Then 'Match found.
TextBox1.SelectionStart = TextPos
TextBox1.SelectionLength = TextToFind.Length
End If