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

Posted

技术标签:

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

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

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

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

案例'&&':

案例'||':

案例'==':

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

【问题讨论】:

那些不是单个字符... 【参考方案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("\\.","")

【讨论】:

以上是关于“字符文字错误中的字符过多”的主要内容,如果未能解决你的问题,请参考以下文章

Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思

PHP错误处理