我刚刚将VB.net解决方案转换为C#解决方案。但很多变量都被转换为:
string var1 = (string)1;
string var2 = (string)intVar; //intVar is a int value
我只是想通过使用一些正则表达式或其他一些替换方法将所有(string)XXXX
转换为XXXX.ToString()
。
有人会帮助我吗?
答案 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
祝你好运!