C# 如何在VisualStudio2010正则表达式中执行此操作?

C# 如何在VisualStudio2010正则表达式中执行此操作?,c#,visual-studio-2010,visual-studio,vb6,vb6-migration,C#,Visual Studio 2010,Visual Studio,Vb6,Vb6 Migration,我的任务是获取大约50个旧的VB6函数和子程序,并将它们转换为C#。它们都非常简单,我发现大部分工作都是手工编辑的——采用类似 Dim rtb As Integer 和打字 int rtb = 0; 我突然想到,在VisualStudio的“快速替换”对话框中,可能有某种方法可以使用正则表达式自动执行此操作。这个想法是用第二个表达式在指定的位置插入通配符值来替换第一个表达式的所有实例,其中“rtb”是某种通配符。但是我不太了解正则表达式,所以这对我来说并不明显 有人能告诉我这是否可行,并指出

我的任务是获取大约50个旧的VB6函数和子程序,并将它们转换为C#。它们都非常简单,我发现大部分工作都是手工编辑的——采用类似

Dim rtb As Integer
和打字

int rtb = 0;
我突然想到,在VisualStudio的“快速替换”对话框中,可能有某种方法可以使用正则表达式自动执行此操作。这个想法是用第二个表达式在指定的位置插入通配符值来替换第一个表达式的所有实例,其中“rtb”是某种通配符。但是我不太了解正则表达式,所以这对我来说并不明显

有人能告诉我这是否可行,并指出Visual Studio版本的正则表达式的正确语法吗

编辑:我尝试了两个在线转换器,然后。我粘贴了

Dim FF As Integer
Dim rc As Variant
Dim rtb As Integer
在这两种情况下都得到了相同的错误:--第1行第1列:预期的EOF

有趣的是,如果我手动键入代码,它们似乎工作正常。我尝试从Visual Basic、Visual Studio和记事本粘贴。我尝试添加前导空格或尾随空格,并添加前导crlf,但没有任何效果,只是指示的行和列始终是第一个非空行。

没有理由使用正则表达式为其创建代码的会话,您可以查看代码转换器

您可以尝试以下其中一种:

但它们不能保证输出代码的完全准确性

  • 如果您有权访问Visual Studio 2008或更早版本,则可以使用内置的VB升级向导将VB6转换为VB.Net
  • 然后你可以使用一个免费的在线转换器,它可以将VB.Net转换成C#(尽管它们有其局限性)
  • 有一些商业工具可以将VB6转换为C#类或,尽管听起来好像只有少量代码需要转换,而且可能不值得转换。

    查找内容:

    Dim[\s\t\r\n]+([^\s\t\r\n]+)[\s\t\r\n]+作为[\s\t\r\n]+整数[\s\t\r\n]*

    替换为:


    int$1=0;

    对不起,正确的表达式没有“;“。试试这个:


    Dim[\s\t\r\n]+([^\s\t\r\n]+)[\s\t\r\n]+As[\s\t\r\n]+Integer[\s\t]*

    问题是我正在使用VS 2012正则表达式提供解决方案。在VS 2010中存在一些差异。例如,您不能使用“\s”匹配空格,结果模式是\1、\2等,而不是$1、$2等。这一模式应该可以完美地工作:

    查找内容:

    Dim[\t\n]+([^\t\n]+)[\t\n]+作为[\t\n]+整数[\t\n]*

    替换为:


    int \1=0;

    您可能想考虑的是.NET语言转换器,它将把VB.NET翻译成C—它不会是完美的,因为VB6不会直接翻译成VB.NET,但是我希望代码的合理百分比能够被识别和正确翻译。我尝试过——如果我手动键入VB,它会很好。但如果我粘贴它,无论是从VisualStudio还是记事本,它都会发出“第1行col 1:EOF预期值”的嘎嘎声“。所以我认为它需要更多的调试才能使用。我尝试了这些,并在我的帖子中添加了一个编辑来显示我的结果。理论上,它们看起来非常适合我的需要,但它们似乎有一些奇怪的线路终止要求。我在两者上得到了完全相同的错误,所以它们必须使用相同的引擎。但是回到我最初的问题——有没有办法用Find/replace和regex实现这一点?在线转换器理论上看起来很棒,但我无法让它们工作。请参阅我添加到问题中的编辑)回到我的原始问题-是否有方法使用Find/replace和regex执行此操作?Get“未找到以下指定文本:”后跟您建议的搜索字符串。我将它剪切并粘贴到Find what中,这样我就不会觉得我打错了。它仍然不喜欢Find表达式-相同的错误消息。请记住,VS使用非标准正则表达式。但别担心。在等待的过程中,我编写了一个带有友好UI的小C#程序,它可以满足我的需要,所以我已经准备好了,不再需要答案。