【问题标题】:"Too many characters in character literal error"“字符文字错误中的字符过多”
【发布时间】:2011-08-02 04:13:14
【问题描述】:

我正在努力处理一段代码并收到错误:

字符文字错误中的字符过多

使用 C# 和 switch 语句遍历字符串缓冲区并读取标记,但在此行中出现错误:

案例'&&':

案例'||':

案例'==':

如何将==&& 保留为字符?

【问题讨论】:

  • 那些不是单个字符...

标签: c# char


【解决方案1】:

您不能将 ==|| 视为字符,因为它们不是字符,而是字符序列。

你可以让你的 switch...case 改为在字符串上工作。

【讨论】:

    【解决方案2】:

    char 只能包含单个字符,字符文字是单引号中的单个字符,即'&' - 如果字符多于一个,则要使用字符串,因此必须使用双引号:

    case "&&": 
    

    【讨论】:

      【解决方案3】:

      这是因为,在 C# 中,单引号 ('') 表示(或封装)单个字符,而双引号 ("") 用于表示字符串。例如:

      var myChar = '=';
      
      var myString = "==";
      

      【讨论】:

        【解决方案4】:

        这是一个例子:

        char myChar = '|';
        string myString = "||";
        

        字符由单引号分隔,字符串由双引号分隔。

        好消息是 C# switch 语句可以处理字符串!

        switch (mytoken)
        {
            case "==":
                //Something here.
                break;
            default:
                //Handle when no token is found.
                break;
        }
        

        【讨论】:

          【解决方案5】:

          我相信你可以使用 Unicode 编码来做到这一点,但我怀疑这是你真正想要的。

          == 是 unicode 值 2A76,所以我相信你可以这样做:

          char c = '\u2A76';
          

          我目前无法对此进行测试,但我很想知道这是否适合您。

          你需要四处寻找其他人。如果您想查看,这是一个 unicode 表:

          http://www.tamasoft.co.jp/en/general-info/unicode.html

          【讨论】:

          • U+2A76 是“三个连续的等号”,而不是两个(参见:fileformat.info/info/unicode/char/2a76)。它与字符序列== 无关,因为您可以在典型的源文件中找到它。
          【解决方案6】:

          我遇到了同样的问题。 String.Replace('\\.','') 不是有效的语句并引发相同的错误。 感谢 C#,我们可以使用双引号而不是单引号和以下作品 String.Replace("\\.","")

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-06-15
            • 2015-05-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-04
            • 2022-11-19
            相关资源
            最近更新 更多