現在、リソース ファイルは 1 つしかありませんが、最終的にはさらに多くなる予定です。ほとんどの場合、各リソース ファイルの名前には一貫したパターンがありますが、値は異なります。各リソース ファイル (*.resx) は、構築中のクラスに密接に関連付けられます。
そうは言っても、名前のパターンはKey?
、SKey
、UKey?
、およびSUKey
です。
Key?
: ? 任意の 1 文字にすることができます。正規表現パターンは次のようになりますKey[A-Z]
UKey?
: ? 任意の 1 文字にすることができます。に似ているKey?
SKey
&SUKey
: いずれかのリソース ファイルで可能なこれらの名前の 1 つだけ
私は本当に知りたいのですが、リソースファイルの値を抽出するための最良の方法は何でしょうか.AとZの間に常にすべての文字があるとは限りません.
編集済み 2012-09-20 11:48AM CST
ResourceManager resmgr = project.resx_name.ResourceManager;
string[] mtch = resmgr.getstring("Key?").toarray<string>();
次に、配列を反復処理し、結果の一致から文字列を作成します。上記の指定されたKey
パターンはすべて、文字列値の正規表現パターンになります。
2012-09-22 9:00AM CST 編集済み
これが私がこれまでに持っているロジックです。誰もその実行可能性を検証できますか? クラスの他のコンポーネントの構築が完了していないので、それらの開発を終了し、できれば来週の半ばから後半にテストを開始します。
ResourceSet rs = syntaxhighlighter.vbnet.ResourceManager.GetResourceSet( CultureInfo.CurrentCulture , true , true );
foreach( DictionaryEntry entry in rs ) {
if( Regex.IsMatch( entry.Key.ToString() , "Key" ) ) {
if( Regex.IsMatch( entry.Key.ToString() , "^Key[A-Z]" ) ) {
this._keys += entry.Value.ToString();
} else if( Regex.IsMatch( entry.Key.ToString() , "^SKey$" ) ) {
this._keys += entry.Value.ToString();
} else if( Regex.IsMatch( entry.Key.ToString() , "^UKey[A-Z]" ) ) {
this._ukeys += entry.Value.ToString();
} else if( Regex.IsMatch( entry.Key.ToString() , "^SUKey$" ) ) {
this._ukeys += entry.Value.ToString();
}
}
}
this._attr = @"<(.*\.)?(.+?)(Attribute)?(\((.*)?\))?>";
Resource.resx ファイル
名前 - 値
- KeyA - AddHandler|AddressOf|Alias|And|AndAlso|As
- SKey - #Const|#Else|#ElseIf|#End|#If|\=|\&|\&\=|*|*\=|/|/\=|\|\\=|\^|\ ^\=|+|+\=|-|-\=|>>|>>\=|\<\<|\<\<\=