我现在只有一个资源文件,但它最终会增长到更多。在大多数情况下,每个资源文件的名称都有一致的模式,但值会有所不同。每个资源文件 (*.resx) 都将与我正在构建的类密切相关。
话虽如此,名称模式是这样的:Key?
、、、和。SKey
UKey?
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|\=|\&|\&\=|*|*\=|/|/\=|\|\\=|\^|\ ^\=|+|+\=|-|-\=|>>|>>\=|\<\<|\<\<\=