将字符串解析为 int 数组
Posted
技术标签:
【中文标题】将字符串解析为 int 数组【英文标题】:Parse string to int array 【发布时间】:2012-10-14 14:14:09 【问题描述】:您好,我正在努力增加我对 C# 的了解,我想做一个简单的任务,但发现它很困难。
我想将字符串的每个字符解析为一个 int 数组。
int[] d = new int[10];
private void button1_Click(object sender, EventArgs e)
s = textBox1.Text;
d[2] = Convert.ToInt32(Convert.ToString(s[1]));
d[3] = Convert.ToInt32(Convert.ToString(s[2]));
d[4] = Convert.ToInt32(Convert.ToString(s[3]));
d[5] = Convert.ToInt32(Convert.ToString(s[4]));
.....
我知道代码是错误的,但我想展示一个示例。在过去的一个小时里查看了 Google,但发现人们想要在新行中显示字符并使用 if 语句进行解析。我想要类似于上面的东西。这可以做到吗?感谢您的宝贵时间。
我在 Java 中找到了这行代码,这正是我想要做的,但有没有等价的?
d1 = Integer.parseInt(String.valueOf(s.charAt(0)));
我现在有一个新问题,当我提交一个数字时,无论我输入多少个数字,它都会返回“索引超出数组范围”。
我还需要将它限制为数组 d 中的 10 个整数。
【问题讨论】:
【参考方案1】:错误的括号,访问字符串中的字符。
d[2] = Convert.ToInt32(Convert.ToString(s(1)));
^
使用,
d[2] = Convert.ToInt32(Convert.ToString(s[1]));
【讨论】:
返回错误“索引超出数组范围。”但感谢您指出这一点。 Textbox.text 是空的吗?索引在外部,仅当您给出的索引大于字符串长度时【参考方案2】: var intArr = "12345678".Select(c => (int)(c-'0')).ToArray();
【讨论】:
【参考方案3】:试试这个:-
var intArrayOfText = someTextBox.Text.ToCharArray().Select(x => (int)(x-'0'));
【讨论】:
(int)'0'
不会产生0
。
感谢。也更新了我的答案【参考方案4】:
可以这样做,如果字符串如下所示
string temps = "-5 8 4 0 1 17 25 -5 -3";
int[] integerArray = temps.Split(' ').Select(x => int.Parse(x)).ToArray();
Array.Sort(integerArray);
foreach (var item in integerArray)
Console.WriteLine(item);
【讨论】:
以上是关于将字符串解析为 int 数组的主要内容,如果未能解决你的问题,请参考以下文章
传输原始数据,例如 int、float-tuple:解析字符串或转换为字节数组更有效?