我需要这样的方法来保存变量名中的一些信息(例如,公式)。
当然,很容易将任何字符串转换为有效名称。但我有两个独特的要求:
1.转换可以在两个方向发生,转换2次后,我们应该得到相同的原始字符串。
比方说,convert2OriginalString(Convert2Variable(originalalstring))应该总是等于originalstring。
提前谢谢你,
答案 0 :(得分:1)
几乎只有#34;特别"变量名称允许的字符是下划线" _"
您可以创建一个自定义Dictionary
,其中包含您想要转义的所有字符,然后通过它迭代替换" special"带有转义字符的字符串中的字符:
private static string ConvertToSafeName(string input)
{
var output = input;
foreach (var lookup in GetLookups())
{
output = output.Replace(lookup.Key, lookup.Value);
}
return output;
}
private static string RevertToSpecialName(string input)
{
var output = input;
foreach (var lookup in GetLookups())
{
output = output.Replace(lookup.Value, lookup.Key);
}
return output;
}
private static Dictionary<string, string> GetLookups()
{
Dictionary<string, string> lookups = new Dictionary<string, string>();
lookups.Add("=", "_eq_");
lookups.Add(">", "_gt_");
lookups.Add("-", "_mn_");
lookups.Add(" ", "__"); // double underscore for space
return lookups;
}
它不是100%万无一失,但&#34; x = y-z&#34;转换为&#34; x_eq_y_mn_z&#34;并再次转换回来,并且具有人类可读性