【发布时间】:2018-08-21 10:35:16
【问题描述】:
嗨,我知道这可能有点傻。但我需要将我的字符串转换为数字,因此我需要使用 char 来遍历运算符。但是,如果我尝试使用两位或更多位数的数字,则该数字会分解为个位数。例如。
string str="2+16-42X"
char[] ch=str.toCharArray();
输出为(忽略逗号)
2,+,1,6,-,4,2,X
我想得到2,+,16,-42,X
关于如何解决这个问题的任何建议?谢谢
【问题讨论】:
-
那是因为 char = 1 byte ... 你不能在 char 上保存 '16' - 那将是一个字符串 ... 你可以在 char 上保存 16 作为 ascii 代码....
-
您不能拥有
char foo = '-42'或char foo = '16' -
因此在您的示例中,您将减号 (-) 作为负数而不是运算符,但 + 是加法。你需要定义你的规则。
-
你刚刚开始学习解析。不幸的是,这是一个需要涵盖的广泛主题,但这本质上就是你想要做的(虽然不知道艺术的话)。例如,将字符拆分为逻辑单元的这一位称为 tokenizing(或 lexing)(并且输出称为令牌)
-
这里有澄清规则的机会吗?还是应该因为不清楚而关闭?为什么
+16被解析为+和16而-42被解析为-42?
标签: c#