替换Visual Studio正则表达式中的文本

时间:2014-08-04 07:35:44

标签: c# regex vb.net

最近我将部分旧代码从vb.net转换为C#

我需要使用visual studio正则表达式更改所有现有代码(在Visual Studio 2010 IDE中查找并替换对话框)

查找     

Rows(0).Item(0).ToString() 
用。。。来代替     
Rows[0][0].ToString() 

这意味着

Rows(--any--).Item(--any--).ToString()
to 
Rows[--any--][--any--].ToString()

我搜索了很多,但我仍然无法做到这一点。

提示:我正在使用visual studio 2010

我的旧vb.net代码是

Dim firstColumnValue As String = dataTable.Rows(0).Item("firstColumn")
Dim secondColumnValue As String = dataTable.Rows(0).Item("secondColumn")     

当我将VB.net转换为C#时,我使用this插件获得了以下内容,我得到了这个。

var firstColumnValue= dataTable.Rows(0).Item("firstColumn").ToString(); 
var secondColumnValue = dataTable.Rows(0).Item("SecondColumn").ToString();

但我实际上想要下面的内容。

var firstColumnValue= dataTable.Rows[0]["firstColumn"].ToString(); 
var secondColumnValue = dataTable.Rows[0]["SecondColumn"].ToString();

vb.net到C#的转换工具转换几乎都很好,但我需要在几乎所有文件中进行上述更改。

3 个答案:

答案 0 :(得分:1)

使用:

查找:Rows({\d*}).Item({\d*}).ToString()

替换为:Rows[\1][\2].ToString()

并选中在搜索/替换窗口中使用正则表达式

答案 1 :(得分:1)

<强>正则表达式:

Rows\(([^)]*)\)\.Item\(([^)]*)\)(\.ToString\(\))

替换字符串:

Rows[\1][\2]\3

DEMO

示例:

string str = "foo bar Rows(0).Item(0).ToString() barfoo";
string result = Regex.Replace(str, @"Rows\(([^)]*)\)\.Item\(([^)]*)\)(\.ToString\(\))", "Rows[$1][$2]$3");
Console.WriteLine(result);
Console.ReadLine();

IDEONE

查找

Rows\({([^)]*)}\)\.Item\({([^)]*)}\)(\.ToString\(\))

替换:

Rows[\1][\2]\3

答案 2 :(得分:0)

您可以使用Microsoft Visual Studio将代码从VB转换为C#。 您可以使用像This simple plug-in for Visual Studio 2010/2012 allows you to convert VB.net code to C#

这样的免费插件

下面这个正则表达式解决方案也不是那么完美。例如:括号内的函数调用,如"foo bar Rows(0).Item(myfunc(n)).ToString() barfoo";