Regex 批量搜索并替换为通配符或Reg表达式MyString.Length到Len(MyString)
我有一个大型ASP.NET项目,我想在其中进行大规模搜索和替换(大约3500个实例) 我想换衣服Regex 批量搜索并替换为通配符或Reg表达式MyString.Length到Len(MyString),regex,vb.net,notepad++,replace,Regex,Vb.net,Notepad++,Replace,我有一个大型ASP.NET项目,我想在其中进行大规模搜索和替换(大约3500个实例) 我想换衣服 If strErrorMessage.Length > 0 If strSomeString.Length > 0 If strWhatever.Length > 0 以及从字符串到以下字符串对Length方法的任何其他类似调用 If Len(strErrorMessage) > 0 If Len(strSomeString) > 0 If Len(strWh
If strErrorMessage.Length > 0
If strSomeString.Length > 0
If strWhatever.Length > 0
以及从字符串到以下字符串对Length方法的任何其他类似调用
If Len(strErrorMessage) > 0
If Len(strSomeString) > 0
If Len(strWhatever) > 0
不管怎样,要一次可靠地做到这一点
我可以搜索和替换类似的内容
If *.Length > 0 --> If Len(*) > 0
但这不起作用,因为它不知道如何正确地重新排列它。目前有VS2010和N++供我使用
有什么想法吗?关于艾哈迈德的评论。这里可能的原因是length方法是一个实例方法,因此,如果在null字符串变量上调用,则会出错 另一方面,LEN更像是一个扩展方法,无论字符串是null还是不包含字符的字符串,它都只返回一个0。在我看来,伦的工作方式更像是伦应该工作的方式 但回到问题上来 你退房了吗
regex命令行搜索和替换工具。这应该可以快速完成该作业。使用Visual Studio查找/替换(启用正则表达式选项),您可以使用: 查找内容:
如果{:a+}\.Length\>0
替换为:如果Len(\1)\>0
模式说明:
=该:a+
匹配字母数字字符,:a
至少匹配一个匹配项+
中的{}
=Visual Studio正则表达式的“标记”(即捕获)方式{:a+}
=必须用反斜杠转义\>
,因为它是此正则表达式风格中的元字符
=引用标记表达式中匹配的文本。数字\1
表示第一个(在本例中是唯一的)标记表达式1
Len()
是一种倒退,它将代码绑定到Microsoft.VisualBasic
命名空间。但是,因为对空值调用.Length
会引发异常。而不是检查你可以使用的长度。在.NET4.0中,您还可以使用
如果strErrorMessage.Length>0,则可以使用以下命令代替:
If Not String.IsNullOrEmpty(strErrorMessage) Then
' or '
If Not String.IsNullOrWhiteSpace(strErrorMessage) Then
如果您对使用它感兴趣,可以保留原始的“查找内容”模式,并将“替换为”模式更改为:如果不是字符串。IsNullOrEmpty(\1)
通常我希望看到人们希望从Len()
到.Length
来摆脱VB6方法。往相反的方向走听起来有问题,似乎是在浪费时间。+1关于Len()
与.Length
的回答很好。感谢您指出这一点。实际上没有“将代码绑定到VisualBasic命名空间”这样的事情。该dll是.net framework核心的一部分,短期内不太可能出现在任何地方。此外,还有大量的C代码示例使用该名称空间中的函数来简化各种功能。也就是说,Ahmed关于String.IsNullOrEmpty的观点仍然很好。它实际上与Len(x)=0是一样的,尽管它总是让我感到非常罗嗦。当然,string类上的一个很好的扩展方法可以解决这个问题。