私たちのアプリケーションでは、変数を含むことができる変換からいくつかの文字列があります。たとえば、Can i have a {beverage}?
の場合、{beverage}
の部分を変数に置き換える必要があります。 私の現在の実装は、すべての変数の名前と値のディクショナリを持ち、正しい文字列を置き換えるだけで動作します。しかし、値を変更すると結果の文字列も変更されるように、変数を参照として登録したいと思います。通常、ref
キーワードのパラメータを渡すと、そのトリックが実行されますが、辞書に格納する方法はわかりません。参照によるディクショナリ値
TranslationParser:
static class TranslationParser
{
private const string regex = "{([a-z]+)}";
private static Dictionary<string, object> variables = new Dictionary<string,object>();
public static void RegisterVariable(string name, object value)
{
if (variables.ContainsKey(name))
variables[name] = value;
else
variables.Add(name, value);
}
public static string ParseText(string text)
{
return Regex.Replace(text, regex, match =>
{
string varName = match.Groups[1].Value;
if (variables.ContainsKey(varName))
return variables[varName].ToString();
else
return match.Value;
});
}
}
main.cs
string bev = "cola";
TranslationParser.RegisterVariable("beverage", bev);
//Expected: "Can i have a cola?"
Console.WriteLine(TranslationParser.ParseText("Can i have a {beverage}?"));
bev = "fanta";
//Expected: "Can i have a fanta?"
Console.WriteLine(TranslationParser.ParseText("Can i have a {beverage}?"));
は全くこのことは可能ですか、私はちょうど間違って問題に近づいていますか?私は唯一の解決策が安全でないコード(ポインタ)を含むことに懸念します。
要するに、私は辞書に変数を保存し、元の変数を変更して、変更された値を辞書から取得したいと思います。 ref
キーワードと同じように。コードで
http://en.wikipedia.org/wiki/Rope_(computer_science)が対象となり得ます。 –
@DaveBishあなたは速い読者です!しかし、その記事は記憶ではないようですが、それは問題ではありません。文字列はxmlファイルから来て、バイナリには含まれません。 – TJHeuvel
そして、文字列の操作はうまくいっているようですが、私はちょうど辞書に基本的に参照を格納したいと思います。 – TJHeuvel