是否有方法在c#中的任何字符串和有效的变量名称之间进行转换

时间:2015-03-27 14:55:58

标签: c# string

我需要这样的方法来保存变量名中的一些信息(例如,公式)。

当然,很容易将任何字符串转换为有效名称。但我有两个独特的要求:

1.转换可以在两个方向发生,转换2次后,我们应该得到相同的原始字符串。

比方说,convert2OriginalString(Convert2Variable(originalalstring))应该总是等于originalstring。

  1. 生成的变量名称应该是可读的,而不仅仅是丑陋的数字。
  2. 提前谢谢你,

1 个答案:

答案 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;并再次转换回来,并且具有人类可读性