想知道C#中一个独特的东西?

时间:2018-03-23 06:37:52

标签: c# regex visual-studio

我有很多代码如下:

AppUtility.EnumToBool(Row["block_friends"].ToString())

我需要将它们转换为类似的东西。

AppUtility.EnumToBool(Row["block_friends"].ToString() == "1")

问题是,我有大约500个这样的实例,我想知道是否会有自动替换这些的方法?

我需要使用Visual Studio IDE中的Find + Replace来执行此操作,以获取C#代码。

我现在有了查找部分:AppUtility\.EnumToBool\((.*)\)但是没有该值的正则表达式。

2 个答案:

答案 0 :(得分:2)

在VS2010中工作的答案:

1。在某处测试正则表达式

我建议使用Regex101执行此任务。只需放入示例文本并将模式放在顶部,看看它是否正常工作。 This is my result。您可以看到常规文本和更改文本被捕获在不同的组(颜色)中。

2。重写正则表达式以匹配VS IDE正则表达式

存在差异。我在regex101中使用了(.*)来对组内的字符进行分组。在VS IDE中,必须将其重写为{.*}。如果要在“替换为”模式中重用该组,则需要在VS IDE中编写\1(与其他地方的$1相对)。

来自regex101的源查找模式: AppUtility\.EnumToBool\(Row\[(.*)\]\.ToString\(\)\)

VS IDE查找模式: AppUtility\.EnumToBool\(Row\[{.*}\]\.ToString\(\)\)

VS IDE替换为模式: Row[\1].ToString() == "1"

(更新)3。在IDE中使用它,看看会发生什么

查找模式: AppUtility\.EnumToBool\((.*)(\))([^\)])

故障:

  1. AppUtility\.EnumToBool\( - 字面意思是AppUtility.EnumToBool
  2. (.*) - 在方法中捕获组,但需要3.工作
  3. (\))([^\)]) - 捕获)个字符,并确保其他字符不是)(如果有多个) s
  4. VS IDE'd:

    AppUtility\.EnumToBool\({.*}{\)}{[^\)]}

    替换为VS IDE:

    AppUtility.EnumToBool(\1)=="1"\2\3

    故障:

    AppUtility.EnumToBool(\1)=="1" - 在最后=="1"之前添加( \2\3 - 添加剩余的字符,以便不吃任何东西

    旧的错误示例,只显示替换窗口:

    Find and replace within VS IDE using regular expressions and capturing groups

答案 1 :(得分:0)

你可以替换

^AppUtility\.EnumToBool\((.*)\)$

\1 == "1"