Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 批量搜索并替换为通配符或Reg表达式MyString.Length到Len(MyString)_Regex_Vb.net_Notepad++_Replace - Fatal编程技术网

Regex 批量搜索并替换为通配符或Reg表达式MyString.Length到Len(MyString)

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

我有一个大型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++供我使用


有什么想法吗?

关于艾哈迈德的评论。这里可能的原因是length方法是一个实例方法,因此,如果在null字符串变量上调用,则会出错

另一方面,LEN更像是一个扩展方法,无论字符串是null还是不包含字符的字符串,它都只返回一个0。在我看来,伦的工作方式更像是伦应该工作的方式

但回到问题上来

你退房了吗


regex命令行搜索和替换工具。这应该可以快速完成该作业。

使用Visual Studio查找/替换(启用正则表达式选项),您可以使用:

查找内容:
如果{:a+}\.Length\>0

替换为:
如果Len(\1)\>0

模式说明:

  • :a+
    =该
    :a
    匹配字母数字字符,
    +
    至少匹配一个匹配项
  • {}
    中的
    {:a+}
    =Visual Studio正则表达式的“标记”(即捕获)方式
  • \>
    =必须用反斜杠转义
    ,因为它是此正则表达式风格中的元字符
  • \1
    =引用标记表达式中匹配的文本。数字
    1
    表示第一个(在本例中是唯一的)标记表达式
您可以阅读有关查找/替换的MSDN正则表达式参考的更多信息

正如我在评论中提到的,我认为使用
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类上的一个很好的扩展方法可以解决这个问题。