0

我的任务是获取大约 50 个旧的 VB6 函数和子例程并将它们翻译成 C#。它们都非常简单,我发现大部分工作都是手动编辑 - 采用类似的表达方式

Dim rtb As Integer

和打字

int rtb = 0;

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

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

编辑: 我尝试了两个在线转换器TelerikDeveloperFusion。我贴在

Dim FF As Integer
Dim rc As Variant
Dim rtb As Integer

并且在这两种情况下都得到相同的错误: -- line 1 col 1: EOF expected
有趣的是,如果我手动输入代码,它们似乎工作正常。我尝试从 Visual Basic、Visual Studio 和记事本粘贴。我尝试添加前导或尾随空格并添加前导 crlf 没有任何效果,除了指示的行和列始终是第一个非空行。

4

5 回答 5

1

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

Yoy 可以尝试以下方法之一:

开发者Fusion

Telerik 代码转换器

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

于 2013-11-11T15:28:43.577 回答
0

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

找什么:

昏暗[ \t\n]+([^ \t\n]+)[ \t\n]+As[ \t\n]+整数[ \t\n]*

用。。。来代替:

整数 \1 = 0;

于 2013-11-11T21:23:28.047 回答
0

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

暗[\s\t\r\n]+([^\s\t\r\n]+)[\s\t\r\n]+As[\s\t\r\n]+整数[\英石]*

于 2013-11-11T18:01:07.860 回答
0
  1. 如果您可以访问 Visual Studio 2008 或更早版本,则可以使用内置的 VB 升级向导将 VB6 转换为 VB.Net。
  2. 然后,您可以使用可以将 VB.Net 转换为 C# 的免费在线转换器之一(尽管它们有其局限性)。例如telerik

有一些商业工具可以将 VB6 转换为 C#,例如VB Migration PartnerVB Upgrade Companion,尽管听起来好像您有少量代码要转换并且可能不值得。

于 2013-11-11T15:43:56.277 回答
0

找什么:

暗[\s\t\r\n]+([^\s\t\r\n]+)[\s\t\r\n]+As[\s\t\r\n]+整数[\s\t\r\n]*;

用。。。来代替:

整数 $1 = 0;

于 2013-11-11T16:22:32.753 回答