0

現在、リソース ファイルは 1 つしかありませんが、最終的にはさらに多くなる予定です。ほとんどの場合、各リソース ファイルの名前には一貫したパターンがありますが、値は異なります。各リソース ファイル (*.resx) は、構築中のクラスに密接に関連付けられます。

そうは言っても、名前のパターンはKey?SKeyUKey?、および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|\=|\&|\&\=|*|*\=|/|/\=|\|\\=|\^|\ ^\=|+|+\=|-|-\=|>>|>>\=|\<\<|\<\<\=
4

0 に答える 0