【发布时间】:2011-08-02 04:13:14
【问题描述】:
我正在努力处理一段代码并收到错误:
字符文字错误中的字符过多
使用 C# 和 switch 语句遍历字符串缓冲区并读取标记,但在此行中出现错误:
案例'&&':
案例'||':
案例'==':
如何将== 和&& 保留为字符?
【问题讨论】:
-
那些不是单个字符...
我正在努力处理一段代码并收到错误:
字符文字错误中的字符过多
使用 C# 和 switch 语句遍历字符串缓冲区并读取标记,但在此行中出现错误:
案例'&&':
案例'||':
案例'==':
如何将== 和&& 保留为字符?
【问题讨论】:
您不能将 == 或 || 视为字符,因为它们不是字符,而是字符序列。
你可以让你的 switch...case 改为在字符串上工作。
【讨论】:
char 只能包含单个字符,字符文字是单引号中的单个字符,即'&' - 如果字符多于一个,则要使用字符串,因此必须使用双引号:
case "&&":
【讨论】:
这是因为,在 C# 中,单引号 ('') 表示(或封装)单个字符,而双引号 ("") 用于表示字符串。例如:
var myChar = '=';
var myString = "==";
【讨论】:
这是一个例子:
char myChar = '|';
string myString = "||";
字符由单引号分隔,字符串由双引号分隔。
好消息是 C# switch 语句可以处理字符串!
switch (mytoken)
{
case "==":
//Something here.
break;
default:
//Handle when no token is found.
break;
}
【讨论】:
我相信你可以使用 Unicode 编码来做到这一点,但我怀疑这是你真正想要的。
== 是 unicode 值 2A76,所以我相信你可以这样做:
char c = '\u2A76';
我目前无法对此进行测试,但我很想知道这是否适合您。
你需要四处寻找其他人。如果您想查看,这是一个 unicode 表:
【讨论】:
== 无关,因为您可以在典型的源文件中找到它。
我遇到了同样的问题。
String.Replace('\\.','') 不是有效的语句并引发相同的错误。
感谢 C#,我们可以使用双引号而不是单引号和以下作品
String.Replace("\\.","")
【讨论】: