次のような辞書(単語とその置換)があるとします。
var replacements = new Dictionary<string,string>();
replacements.Add("str", "string0");
replacements.Add("str1", "string1");
replacements.Add("str2", "string2");
...
および入力文字列として:
string input = @"@str is a #str is a [str1] is a &str1 @str2 one test $str2 also [str]";
編集:
期待される出力:
string0 is a string0 is string0 is string1 string2 one test string2
「 [CharSymbol]word」のすべての出現箇所を、辞書の対応するエントリ/値に置き換えたいです。
ここで、Charsymbolは @#$%^&*[] .. であり、単語が有効な後は ']' 、つまり [str] です。
交換のために次のことを試しました
string input = @"@str is a #str is a [str1] is a &str1 @str2 one test $str2 also [str]";
string pattern = @"(([@$&#\[]+)([a-zA-Z])*(\])*)"; // correct?
Regex re = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
// string outputString = re.Replace(input,"string0");
string newString = re.Replace(input, match =>
{
Debug.WriteLine(match.ToString()); // match is [str] #str
string lookup = "~"; // default value
replacements.TryGetValue(match.Value,out lookup);
return lookup;
});
str 、 str1 などとして一致を取得するにはどうすればよいですか。つまり、charsymbol のない単語です。