我有一个像这样的字符串
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”之后出现。但“开始”可以是整个字符串中的任何位置。
如何使用正则表达式执行此操作?
答案 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
如果您还要查找start
或COLOR
,请忽略此案例,例如使用s.IndexOf("color=", startIndex, StringComparison.OrdinalIgnoreCase)
。
答案 1 :(得分:0)
没有正则表达式的简单解决方案:
MyString.Replace("color=Blue","color=None")
Replace
方法用目标字符串替换给定字符串的任何部分。
希望这会有所帮助:)