0

我现在只有一个资源文件,但它最终会增长到更多。在大多数情况下,每个资源文件的名称都有一致的模式,但值会有所不同。每个资源文件 (*.resx) 都将与我正在构建的类密切相关。

话虽如此,名称模式是这样的:Key?、、、和。SKeyUKey?SUKey

  • Key?: ? 可以是任何单个字符。正则表达式模式将是这样的Key[A-Z]
  • UKey?: ? 可以是任何单个字符。如同Key?
  • SKey& SUKey:这些名称中只有一个可能是任何资源文件

我真的只是想知道,提取资源文件中的值的最佳方法是什么,因为它们并不总是在 A 和 Z 之间有每个字母?

于 2012 年 9 月 20 日上午 11:48 CST 编辑

ResourceManager resmgr = project.resx_name.ResourceManager;
string[] mtch = resmgr.getstring("Key?").toarray<string>();

然后遍历数组并从结果匹配中构建一个字符串。上面所有指定的Key模式都将产生一个字符串值正则表达式模式。

于 2012 年 9 月 22 日上午 9:00 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)?(\((.*)?\))?>";

资源.resx 文件

名称 - 值

  • KeyA - AddHandler|AddressOf|别名|And|AndAlso|As
  • SKey - #Const|#Else|#ElseIf|#End|#If|\=|\&|\&\=|*|*\=|/|/\=|\|\\=|\^|\ ^\=|+|+\=|-|-\=|>>|>>\=|\<\<|\<\<\=
4

0 回答 0