使用正则表达式替换特定起始子字符串后的字符串的特定部分

时间:2018-03-28 08:54:22

标签: regex vb.net

我有一个像这样的字符串

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if(e.KeyCode == Key.A)
    {
        if(!timer1.Enabled)
            timer1.Start();
        else
            timer1.Stop();

    }
}

我想在“开始”之后找到“color =”并将“color = BLUE”替换为“color = None”。

“color = BLUE”总是在“Start”之后出现。但“开始”可以是整个字符串中的任何位置。

如何使用正则表达式执行此操作?

2 个答案:

答案 0 :(得分:1)

我会使用纯粹,高效的字符串方法,即使在color之后有多个Start,这也会有效:

Dim s = "This is an example. Start color=BLUE and rest of color=Green the string"
Dim startIndex = s.IndexOf("Start", StringComparison.Ordinal)
If startIndex = -1 Then Return s ' or do whatever you want, there is no starting point
Dim colorIndex = s.IndexOf("color=", startIndex, StringComparison.Ordinal)
While colorIndex >= 0
    colorIndex += "color=".Length
    Dim endIndex = s.IndexOf(" ", colorIndex, StringComparison.Ordinal)
    If endIndex = -1 Then Exit While
    Dim oldColor = s.Substring(colorIndex, endIndex - colorIndex) ' just out of interest
    Dim newColor = "None"
    s = $"{s.Remove(colorIndex)}{newColor}{s.Substring(endIndex)}"
    colorIndex = s.IndexOf("color=", endIndex, StringComparison.Ordinal)
End While

如果您还要查找startCOLOR,请忽略此案例,例如使用s.IndexOf("color=", startIndex, StringComparison.OrdinalIgnoreCase)

答案 1 :(得分:0)

没有正则表达式的简单解决方案:

 MyString.Replace("color=Blue","color=None")

Replace方法用目标字符串替换给定字符串的任何部分。

希望这会有所帮助:)