将字符串解析为 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 数组的主要内容,如果未能解决你的问题,请参考以下文章

Java语言中,如何将String转化成Int数组

传输原始数据,例如 int、float-tuple:解析字符串或转换为字节数组更有效?

将字符串数组转换为整数数组

JavaScript中将字符串类型转换为整形的函数

表达式的类型必须是数组类型,但它解析为 ArrayList(试图比较两个数组中的字符串

如何将字符串解析为可为空的 int