У меня есть Dictionary<string, string>
, используемый для соответствия string
новым.Обработка строк на основе словаря
Dictionary<string, string> dictionary = new Dictionary<string, string>()
{
{ "foo", "bar" }
};
метод я использую, чтобы соответствовать string
:
public static string GetValueOrKeyAsDefault(this Dictionary<string, string> dictionary, string key)
{
string value;
return dictionary.TryGetValue(key, out value) ? value : key;
}
Используется как так:
string s1 = dictionary.GetValueOrKeyAsDefault("foo"); /* s1 equals "bar" */
string s2 = dictionary.GetValueOrKeyAsDefault("test"); /* s2 equals "test" */
Теперь я хочу, чтобы соответствовать string
частично и сохранить часть этой строки в соответствует одному.
/* {0} is arbitrary, could be anything else */
Dictionary<string, string> dictionary = new Dictionary<string, string>()
{
{ "SPROC:{0}", "{0}" },
{ "onClick='{0}(this)'", "{0}" }
};
string s1 = dictionary.SomeMethod("SPROC:my_sproc"); /* s1 equals "my_sproc" */
string s2 = dictionary.SomeMethod("onClick='HandleOnClick(this)'"); /* s1 equals "HandleOnClick" */
Я чувствую, как regex
может быть путь, но я понятия не имею, как ее реализовать.
Как ваш SomeMethod знает, какая часть строки соответствует? Какой результат вы пытаетесь достичь? – CodeMonkey
Если '{0}' произвольно, каково правило для совпадения здесь? Если значение/ключ заканчивается ключом/значением? Или только один содержит другой? А если несколько отвечают требованиям? –
@ user3387223 Результат, который я пытаюсь достичь, - это получить часть 'string'. Матч должен быть * динамическим *. –