【问题标题】:How to convert a string to an enum array(keycode[])如何将字符串转换为枚举数组(keycode[])
【发布时间】:2019-06-05 08:39:51
【问题描述】:

我正在尝试转换一个字符串,该字符串包含用逗号分隔的键码',' (F1,F2,A,B...)。

但是当我在文本文件中写入这些值时,我得到 UnityEngine.KeyCode[] 而不是实际值。

    private static ConfigSimulation UpdateConfigSimulation(string path, ConfigSimulation config)
{
    #region ReadConfig
    Dictionary<string, string> content = new Dictionary<string, string>();
    content = ReadConfigFile(path);
    #endregion
    foreach (KeyValuePair<string, string> cont in content)
    {
        if (config.Keys.ContainsKey(cont.Key))
        {
            KeyCode[] Tab = new KeyCode[cont.Value.Split(',').Length];
            if (!cont.Value.Contains(',') || (cont.Value.Length == 0))
            {
                KeyCode MyStatus = (KeyCode)Enum.Parse(typeof(KeyCode), cont.Value, true);
                Tab[0] = MyStatus;
            }
            else if (cont.Value.Contains(','))
            {
                string[] Splits = cont.Value.Split(',');
                for (int i = 0; i < Splits.Length; i++)
                {
                    KeyCode MyStatus = (KeyCode)Enum.Parse(typeof(KeyCode), Splits[i], true);
                    Tab[i] = MyStatus;
                }
            }
            config.Keys[cont.Key] = Tab;
        }
    }
    return (config);
}

关于编写代码:

        File.WriteAllText(path, string.Empty);
    using (StreamWriter file = new StreamWriter(path))
    {
        file.WriteLine("###keys");
        foreach (var kvp in config.Keys)
        {
            file.WriteLine(kvp.Key + '=' + kvp.Value);
        }
    }

【问题讨论】:

  • 能否请您发布一个完整的代码示例?究竟是什么不工作?
  • 代码浏览一个文本文件,如果值对应于键,就做这个处理。我将添加编写代码
  • 添加调用方式和位置...包括所有变量的类型
  • 我希望现在更清楚了
  • 什么是config.Keyscont 是什么?

标签: c# arrays string unity3d


【解决方案1】:

config.KeysDictionary&lt;string, KeyCode[]&gt; 类型,所以当你这样做时

foreach (var kvp in config.Keys)
{
    file.WriteLine(kvp.Key + '=' + kvp.Value);
}

kvp.ValueKeyCode[] 类型,因此它被隐式称为 ToString() 返回 "KeyCode[]"。没有隐式方法可以打印出以逗号分隔的所有值。


使用string.Joinlike 将数组转换为逗号分隔的字符串

foreach (var kvp in config.Keys)
{
    file.WriteLine(kvp.Key + '=' + string.Join(",", kvp.Value));
}

【讨论】:

  • 公共类 ConfigSimulation : MonoBehaviour { public Dictionary Keys { get; } = 新字典(); }
  • 我不知道...你在哪里(哪一行,哪个变量)得到它?
猜你喜欢
  • 1970-01-01
  • 2014-09-27
  • 2016-07-30
  • 2012-11-30
  • 2010-10-03
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
相关资源
最近更新 更多