0

私は約 50 の古い VB6 関数とサブルーチンを取り、それらを C# に翻訳する任務を負っています。それらはすべて非常に簡単で、作業の大部分は手作業で編集されていることがわかりました-次のような式を取ります

Dim rtb As Integer

と入力

int rtb = 0;

Visual Studio の [クイック置換] ダイアログで正規表現を使用してこれを自動化する方法があるかもしれないと思いました。アイデアは、「rtb」がある種のワイルドカードである最初の式のすべてのインスタンスを、指定されたスポットにそのワイルドカード値を挿入する2番目の式に置き換えることです。しかし、私は正規表現をよく知らないので、そうではありませんでした私には明らかです。

これが実行可能で、Visual Studio のバージョンの正規表現の正しい構文を示しているかどうかを誰かに教えてもらえますか?

編集: TelerikDeveloperFusion の 2 つのオンライン コンバーターを試しました。貼り付けました

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

0
  1. Visual Studio 2008 以前にアクセスできる場合は、組み込みの VB アップグレード ウィザードを使用して VB6 を VB.Net に変換できます。
  2. 次に、VB.Net を C# に変換できる無料のオンライン コンバーターの 1 つを使用できます (制限はありますが)。例:テレリック

VB Migration PartnerVB Upgrade Companionのような VB6 を C# に変換する商用ツールがありますが、変換するコードの量が少なく、価値がないかもしれません。

于 2013-11-11T15:43:56.277 に答える
0

問題は、VS 2012 正規表現を使用してソリューションを提供していることです。VS 2010 にはいくつかの違いがあります。たとえば、「\s」を使用してスペースに一致させることはできず、結果のパターンは $1、$2 などではなく、\1、\2 などになります。これは完全に機能するはずです。

何を見つける:

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

と置換する:

int \1 = 0;

于 2013-11-11T21:23:28.047 に答える
0

何を見つける:

Dim[\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 に答える
0

申し訳ありませんが、正しい表現は「;」なしです。これを試して:

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

于 2013-11-11T18:01:07.860 に答える