在C#VS2008中如何将(字符串)aaa替换为aaa.ToString()

时间:2009-07-06 14:48:11

标签: c# vb.net

我刚刚将VB.net解决方案转换为C#解决方案。但很多变量都被转换为:

string var1 = (string)1;
string var2 = (string)intVar; //intVar is a int value

我只是想通过使用一些正则表达式或其他一些替换方法将所有(string)XXXX转换为XXXX.ToString()

有人会帮助我吗?

6 个答案:

答案 0 :(得分:4)

查找: \(string \){:a *}
替换: \ 1.ToString()

首先备份您的解决方案!

答案 1 :(得分:3)

文本编辑器Notepad++具有正则表达式支持。您可以尝试以下操作:将[(]string[)][ ]*([^ .\t;/]*)替换为\1.ToString()

这转变了这个:

(string) xyz;
(string) abc.123;
(string)alf;
(string)argu ment

进入这个:

xyz.ToString();
abc.ToString().123;
alf.ToString();
argu.ToString() ment

但是,这并不处理(string) aFunction( obj1, obj2 )

的情况

您可能希望先自己处理这些问题,或者建立另一个正则表达式。

答案 2 :(得分:1)

我不确定你是否真的想要将其作为批量转换。与您示例中的所有实际情况一样,您最终应该得到以下结果。

string var1 = "1";

string var2 = intVar.ToString();

当你的第一个例子从头开始可以是一个字符串时,你不需要做一个演员。

答案 3 :(得分:0)

我对regex不太熟悉,但我提出了警告。您可能不希望将所有(字符串)xxx替换为xxx.toString(),因为(正如您所知,我确定)(字符串)正在转换,而ToString()是一个方法调用。如果对象是字符串的后代,则只能将某些内容转换为字符串。如果类的实现者覆盖了ToString()方法,则可以调用ToString()。如果没有,那么您将获得默认实现。

答案 4 :(得分:0)

嗯,你在转换中获得额外代码的原因是你在VB代码中没有Option Strict On。如果你有,你将无法在第一时间进行这些隐式转换。

因此,VB代码应如下所示,然后C#代码在转换中看起来正确:

var1 As String = "1"

var2 As String = intVar.ToString

在转换完成后修复此问题远远超出了正则表达式的能力。当然,您可以创建一个将所有(string)x转换为x.ToString()的表达式,但这可能会导致更多问题被解决...

答案 5 :(得分:0)

建议你使用这个

查找:\(string \){(。*)} {:Po}

替换:\ 1.ToString()\ 2

祝你好运!