1

我希望能够解析一个六位数字并将每个字符放入一个数组中,例如:"738593" -> d[1] = 7, d[2] = 3. d[3] = 8....etc

private void button2_Click(object sender, EventArgs e)
{
    int[] d = new int[10];
    d1 = Integer.parseInt(String.valueOf(s.charAt(0)));
    d3 = Integer.parseInt(String.valueOf(s.charAt(1)));
    d2 = Integer.parseInt(String.valueOf(s.charAt(2))); //JAVA LINE
    ...
}

我从 Java 中找到了一条完全符合我要求的行,但我一直在寻找 C# 等价物。有任何想法吗?

4

7 回答 7

2

尝试:

int[] d = s.Select(c => (int)c - (int)'0').ToArray();

您在这里所做的是迭代字符串中的每个字符,将它们转换为整数流 ( IEnumerable<int>),然后将该流转换为数组。这需要 C# 3.0 和 LINQ。

或者,您可以尝试:

int[] d = s.Select(c => int.Parse(c.ToString()).ToArray();

如果传入的字符串不是数字字符串,这将引发异常,但可能会产生一些性能损失,因为字符串中的每个字符都会生成另一个字符串。

这两种方法都适用于任何大小的数字字符串*。

*当然可以存储在内存中。

于 2012-11-04T16:37:21.990 回答
2

在 c# 中,这将是:

private void button2_Click(object sender, EventArgs e)
{
    int[] d = new int[10];
    d1 = int.Parse(s[0].ToString());
    d3 = int.Parse(s[1].ToString());
    d2 = int.Parse(s[2].ToString());
    ...
}

没有它可能会起作用,.ToString()但我不确定。

于 2012-11-04T16:37:49.773 回答
1

我能想到的最简单的事情是将其转换为字符数组:

char[] val = s.toCharArray();

由于 char 数据类型只是整数,这应该不是问题,而且我认为您可以这样做:

int[] val = s.toCharArray();

但我对此并不完全确定,所以没有关于那个的承诺:)

于 2012-11-04T16:32:09.777 回答
1

试试这个。

int x=654321;
string[] stringarray=x.toString().split('');
于 2012-11-04T16:34:36.793 回答
1
int[] d = new int[6];
for(int i=0; i<6; i++){
    d[i] = Int32.Parse(s[i]);
}

这就是您在 c# 中将字符串解析为整数的方式

于 2012-11-04T16:39:39.623 回答
1

可能如果您直接转换,您可能会得到 asii 值,请尝试以下操作:

char[] val = 738593.ToString().ToCharArray().ToArray();

其中 to 字符串可能会避免将每个数字转换为 asii 值。

于 2012-11-04T16:49:00.347 回答
1
static public int[] StringToIntArray(string input)
{
    List<int> tempList = new List<int>();
    foreach (char c in input)
    {
        if (c >= '0' && c <= '9')
        {
            tempList.Add(c - '0');
        }
    }
    return tempList.ToArray();
}

请注意,这将完全忽略任何非数字。因此,如果您的输入是"867ASDF5309",则 int 数组将显示为{ 8, 6, 7, 5, 3, 0, 9 }

于 2012-11-04T17:11:13.577 回答