如何在返回整个字符串时替换特定索引处的单词?

时间:2014-07-16 12:36:18

标签: vb.net

我希望用重复的星号替换程序中的特定单词。

这是我目前的职能: Word就是被替换的词。

mystring = tbText.text
mystring = Replace(mystring, word, "***", 5, 1)

这里的问题是mystring只返回被替换的单词而不是返回整个字符串这一事实的原因,因为最小索引和最大索引,因此只返回索引5和索引10结尾的单词。集。

我是否可以使用另一个函数替换特定单词,同时返回整个字符串并替换单词?

4 个答案:

答案 0 :(得分:1)

取下第4和第5个参数。

mystring = tbText.text
mystring = Replace(mystring, word, "***")

更新:正确完成我的研究后,OP想要的是将第4个参数更改为1,就像这样;

mystring = Replace(mystring, word, "***", 1, 1)

正如文档所解释的那样,这将返回从位置1(参数4)开始的原始字符串,并且只进行1次替换(参数5)。

希望我们现在都能同意OP的要求得到满足 - 即使它已经过了很多年了!

答案 1 :(得分:1)

var regex = new Regex(Regex.Escape("o"));
var newText = regex.Replace("Hello World", "Foo", 1);

Replace first occurrence of pattern in a string

答案 2 :(得分:0)

我想我从未使用过与{0}不同的Start参数,所以我从未注意到&#34; Replace函数的返回值是一个从指定位置开始的字符串按Start并在Expression字符串的末尾结束,并按照FindReplace值的指定进行替换。&#34; < / p>

尝试使用此代码来解决您的问题:

Dim strWord As String = "6"
Dim strNewWord As String = "*****"

Dim strTest As String = "1234567890"

MsgBox(Strings.Left(strTest, strTest.IndexOf(strWord)) & _
    Replace(strTest, strWord, strNewWord, strTest.IndexOf(strWord) + 1, 1))

答案 3 :(得分:0)

您可以使用StringBuilder

Dim mystring As String = "This is my String"
Dim word As String = "my"

Dim sb As New System.Text.StringBuilder(mystring)
sb.Replace(word, "***", 8, 2)
Dim newstring As String = sb.ToString()

现在newstring设置为This is *** String