Csharp/C#教程:替换为通配符分享


替换为通配符

我需要一些建议。 假设我有以下字符串: Read Variable我想在字符串中找到这样的所有文本片段,并使它们全部如下所示: Variable = MessageBox.Show 。 作为附加示例:

 "Read Dog" --> "Dog = MessageBox.Show" "Read Cat" --> "Cat = MessageBox.Show" 

你能帮助我吗? 我需要在C#中使用RegEx快速建议。 我认为这是一项涉及通配符的工作,但我不知道如何使用它们…而且,我明天需要这个用于学校项目…谢谢!

编辑:这是我到目前为止所做的,它不起作用: Regex.Replace(String, "Read ", " = Messagebox.Show")

你可以这样做

 string ns= Regex.Replace(yourString,"Reads+(.*?)(?:s|$)","$1 = MessageBox.Show"); 

s+匹配1到多个空格字符

(.*?)(?:s|$)匹配0到多个字符,直到第一个空格(即s )或直到达到字符串的结尾(即$

$1代表第一个被捕获的组,即(.*?)

您尝试的问题是,它无法知道应该在您的变量之后插入替换字符串。 假设有效变量名称包含字母,数字和下划线(可以方便地与w匹配)。 这意味着,任何其他字符结束变量名称。 然后你可以匹配变量名称,捕获它(使用括号)并将其放在$1的替换字符串中:

 output = Regex.Replace(input, @"Reads+(w+)", "$1 = MessageBox.Show"); 

请注意s+匹配一个或多个任意空格字符。 w+匹配一个或多个字母,数字和下划线。 如果您只想将变量名称限制为字母,可以在此处进行更改:

 output = Regex.Replace(input, @"Reads+([a-zA-Z]+)", "$1 = MessageBox.Show"); 

这是一个很好的教程。

最后请注意,在C#中,建议将正则表达式写为逐字符串( @"..." )。 否则,你将不得不双重逃避一切,以便反斜杠进入正则表达式引擎,这真的会降低正则表达式的可读性。

你可能想澄清你的问题……但是这里有:

如果要匹配正则表达式中“读取”之后的下一个单词,请使用Read (w*) ,其中w是单词字符类, *是贪婪匹配运算符。

如果要匹配正则表达式中“读取”后的所有内容,请使用Read (.*)$ where . 将匹配所有字符, $表示行尾。

使用正则表达式,您可以使用$1 = MessageBox.Show的替换,因为$ 1将引用第一个匹配的组(由括号表示)。

完整代码:

上述就是C#学习教程:替换为通配符分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 replacedString = Regex.Replace(inStr, @"Read (.*)$", "$1 = MessageBox.Show"); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/982970.html

(0)
上一篇 2021年12月18日
下一篇 2021年12月18日

精彩推荐