3

嗨,我正在尝试将一个字符串拆分为一个字符数组,但由于某种原因,结果不是我所期望的。我通过调试器抛出的这段代码,我给它字符串“34325”。当我到达部分出于某种原因将字符串转换为字符数组的代码中,我可以在调试器中看到两组字符。我得到如下信息:

char[0] = 51 '3' char[1] = 52 '4' char[2] = 51 '3' char[3] = 50 '2' char[4] = 53 '5'

然后,当我将 char 数组的每个元素转换为 int 时,第一个数字总是取:51、52、51、50、53。

我的问题是我怎样才能纠正这个,所以我得到 3 , 4 , 3 , 2 , 5 ?当我使用 toCharArray() 方法时,这些数字是从哪里来的:51 ,52 ,51 ,50 53?

这是我的代码:

    value = TextBox1.Text;

    char[] numberChars = value.ToCharArray();
    int[] numbers = numberChars.Select(x => Convert.ToInt32(x)).ToArray();

    for( int i = 0; i < numbers.Length; i++ ) {
        TextBox2.Text += numbers[i] + " ";
    }
4

2 回答 2

2

你得到的“其他”序列是ascii值的序列......

看一下int.Parse(string)

于 2012-11-04T21:30:40.207 回答
2

如果我正确理解您的问题,您希望将字符串拆分为代表数字的整数,如下所示:"34325"变成new int[] {3,4,3,2,5}.

如下更改您的代码,以将表示数字的每个字符解释为一位数:

 int[] numbers = numberChars.Select(x => ((int)x)-'0').ToArray();

这是ideone 上演示的链接

您看到 numbers 5152等的原因是您看到了对应数字的 ASCII 码。

于 2012-11-04T21:30:55.033 回答