“字符文字错误中的字符过多”
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:未处理的内部错误