如何解决当我尝试将字符串数组转换为字符数组时出错
我是 c# 新手,我想为学校创建一个计算器,但在第 45 行出现错误。错误消息:字符串必须正好是一个字符长。我认为在拆分 String 数组然后另存为 char 数组后出现错误。但我不知道为什么,可能是假字符。
代码部分:
string eingabe = txtergebnis.Text;
string[] zahlen;
string[] Operatoren;
zahlen = eingabe.Split('+','-','*','/');
Operatoren = eingabe.Split('0','1','2','3','4','5','6','7','8','9',',');
double[] dZahlen = zahlen.Select(double.Parse).ToArray();
char[] charOperatoren = Operatoren.Select(char.Parse).ToArray();
string stringOperatoren = new string(charOperatoren);
错误信息是通过 char[] 来的。
解决方法
试试:
char[] charOperatoren = eingabe.Where(x => x != ',' && !char.IsDigit(x)).ToArray();
关于错误:
char.Parse()
只接受长度为 1 的 strings
。
Operatoren
的某些成员包含多于或少于一个字符(例如 empty string
)。
当您拆分不同的数字时,例如“12”将给出 3 个空字符串作为结果:
- 在字符串开始之前
- 在“1”和“2”之间
- 在字符串的末尾
空字符串不能是字符。一个解决方案:
Operatoren = eingabe.Split(new[] {'0','1','2','3','4','5','6','7','8','9',','},StringSplitOptions.RemoveEmptyEntries);
这将删除那些空字符串。
,您的情况的解决方案是使用:
Operatoren.Where(o => !string.IsNullOrEmpty(o)).Select(char.Parse).ToArray();
因为您要按数字拆分运算符。
想想你正在处理一个“1+2-3*4/5”的输入 所以你的“分裂”结果是:
['']['+']['-']['*']['/']
现在,如果您将访问第一个成员,则此调用将在您收到的异常中结束,因为第一个元素为空。
但要注意 char.Parse
只是接受长度为 1 (read documentation) 的 string
也许你应该考虑在这里使用另一个解析选项。 (Other question which maybe help you)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。