私はC#を使用しています。 NET 2.0およびWinForms。文字列のすべてのインスタンスを先頭にchar
私はこのようなアセンブリでフォーマットされたコードの部分を持っている:
VARIABLE = 40
ADDRESS = $60
LDA VARIABLE;
STA ADDRESS;
出力は次のようになります。もちろん
!VARIABLE = 40
!ADDRESS = $60
LDA !VARIABLE;
STA !ADDRESS;
を、それよりもはるかに多くのがあります。 2000行と同様ですが、ファイルの先頭に宣言があり、ロード/セーブなどを行うことができます。しかし、私の問題は、これらの宣言のすべてに(生のコードでさえ)「!
私の現在の方法はこれです:
var defs = tab.tb.GetRanges(@"^\s*([A-Za-z0-9_]+){4,255}\s*=", RegexOptions.Multiline); // all declarations are formatted like this, so use regex to get all of them
foreach (var def in defs)
{
string actual = def.Text.Substring(0, def.Text.IndexOf(' ')); // remove the = sign since its not used in actual code
txt = txt.Replace(actual, "!" + actual);
}
しかし、この方法は非常に遅いです。私のファイル内のすべての宣言を「修復」するのに約3秒かかります。もっと良い方法はありますか?そして、私のテキストコントロールとしてhttp://www.codeproject.com/KB/edit/FastColoredTextBox_.aspxを使用しているため、レコードのために、構文は通常のテキストボックスと少し異なります。
この例では、 'VARIABLE'と' ADDRESS'(行1と2)の前に '!'を付けますが、残りの部分は入れませんか?あるいは、各行の前に4つの '! 'があるでしょうか?サンプルの出力は少しわかります – Prescott
部分文字列ではなく正規表現置換()を使用して新しい文字列を再割り当てすることがより速くなるかもしれません:http://msdn.microsoft.com/en-us/ /library/system.text.regularexpressions.regex.replace.aspx –
@TimMedoraしかし、正規表現マッチの部分文字列をどうやって取得できますか?私の正規表現は "VARIABLE ="を返し、 "VARIABLE"のすべてのインスタンスを置き換える必要があります。 – david