我有一个大型的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(strWhatever) > 0
无论如何要一次性可靠地做到这一点?
我可以搜索并替换类似
的内容If *.Length > 0 --> If Len(*) > 0
这不会起作用,因为它不会理解如何正确地重新排列它。目前我可以使用VS2010和N ++。
有什么想法吗?
答案 0 :(得分:2)
关于艾哈迈德的评论。这里可能的原因是 length 方法是实例方法,因此,如果对空字符串变量调用,则会出错。
另一方面,LEN更像是一个扩展方法,无论字符串是否为null还是不包含字符的字符串,都只返回0。在我看来,Len的工作更像是 len 。但回到这个问题。
你签了吗
正则表达式命令行搜索和替换工具。这应该可以快速完成这项工作。
答案 1 :(得分:1)
使用Visual Studio查找/替换(启用了正则表达式选项),您可以使用:
查找内容: If {:a+}\.Length \> 0
替换为: If Len(\1) \> 0
模式说明:
:a+
= :a
匹配字母数字字符,+
至少匹配一次{}
in {:a+}
= Visual Studio正则表达式“标记”(即捕获)表达式的方式\>
=必须使用反斜杠对>
进行转义,因为它是此正则表达式中的元字符。\1
=指的是标记表达式中匹配的文本。数字1
指的是第一个(在这种情况下是唯一的)标记表达式。您可以阅读有关查找/替换here的MSDN正则表达式引用的更多信息。
正如我在评论中提到的,我认为使用Len()
是向后退一步,将代码绑定到Microsoft.VisualBasic
命名空间。 @drventure brought up a good point但是,因为在空值上调用.Length
会抛出异常。您可以使用String.IsNullOrEmpty而不是检查长度。在.NET 4.0中,您还可以使用String.IsNullOrWhiteSpace。
您可以使用以下If strErrorMessage.Length > 0
代替:
If Not String.IsNullOrEmpty(strErrorMessage) Then
' or '
If Not String.IsNullOrWhiteSpace(strErrorMessage) Then
如果您对使用此功能感兴趣,可以保留原始的“查找内容”模式,并将“替换为”模式更改为:If Not String.IsNullOrEmpty(\1)