11

私はこれらの配列を持っています

char[] array = {'1', '2', '3', '4'};
int[] sequence = new int[array.Length];  

arrayに番号を割り当てる簡単な方法はありsequenceますか?

私はこれを試しました

for (int i = 0; i < array.Length; i++)
{
    seqence[i] = Convert.ToInt32(array[i]);
}

しかし、数字そのものではなく、1、2、3、4 の ASCII コーディングを取得します。

4

9 に答える 9

11
using System.Linq;

char[] array = { '1', '2', '3', '4' };
var ints = array.Select(x => int.Parse(x.ToString()));
于 2013-10-31T13:45:09.847 に答える
6

charを最初に変換するだけstringです:

for (int i = 0; i < array.Length; i++)
{
     sequence[i] = Convert.ToInt32(array[i].ToString());
}

しかしもちろん、これをすべて 1 つの linq クエリで実行できます。

char[] array = {'1', '2', '3', '4'};
int[] sequence = array.Select(c => Convert.ToInt32(c.ToString())).ToArray();
于 2013-10-31T13:46:25.920 に答える
4

最初に各文字を文字列に変換する場合は、それを使用してint.Parse(または引き続きConvert.ToInt32) 動作します。

個人的には、これにはLINQを使用します。

int[] sequence = array.Select(x => int.Parse(x.ToString())).ToArray();

... またはToList、 に満足している場合に使用しList<int>ます。

別の回答で提案されているように使用したい場合はChar.GetNumericValue、LINQ でも使用できます。

int[] sequence = array.Select(x => (int) char.GetNumericValue(x)).ToArray();

を返すため、へのキャストintが必要であることに注意してください。(たとえば、「a half」などの値の Unicode 文字があります。)char.GetNumericValuedouble

または、ASCII 数字だけを使用することが絶対に確実な場合は、quick and dirty を使用できます。

int[] sequence = array.Select(x => x - '0').ToArray();
于 2013-10-31T13:45:27.533 に答える
3

試す

for (int i = 0; i < arr.Length; i++)
 {
     seqence[i] = (int)Char.GetNumericValue(array[i]);
 }
于 2013-10-31T13:44:47.737 に答える
1

それを達成するためにEnumerable.Rangeを使用することができます。- から - までの一連の連続した数字を生成します。

ほんの一例:

 IEnumerable<int> squares = Enumerable.Range(1, 10)

これは、元の char 配列が char 内の数字の連続したシーケンスである場合に当てはまります。

配列が任意の順序とシーケンスの対​​象である場合は、正しい変換を使用してください。

array.Select(x => int.Parse(x.ToString()))
于 2013-10-31T13:44:55.343 に答える
0

char 配列を反復処理し、次の変換を使用します。

char[] charArray = { '1', '2', '3', '4' };

int[] intArray= new int[charArray .Length];

for (int i = 0; i < charArray .Length; i++)
{
    intArray[i] = (int)Char.GetNumericValue(charArray[i]);   

}
于 2013-10-31T13:45:25.777 に答える
0

これを使って:

for (int i = 0; i < array.Length; i++)
{
    sequence[i] = array[i] - '0';
}

ここには多くの正解がありますが、(安全でないコードを使用したくない場合を除き) これが最速であり、追加のメモリを使用しません。

于 2013-10-31T13:46:16.390 に答える
0

これを試して:

char[] array = { '1', '2', '3', '4' };

int[] sequence = new int[array.Length];

for (int i = 0; i < array.Length; i++)
{
    sequence[i] = int.Parse(array[i].ToString());
}
于 2013-10-31T13:46:19.520 に答える
0

整数に変換する前に、Char 値を String に変換してみてください。

for (int i = 0; i < arr.Length; i++)
{
  sequence[i] = Convert.ToInt32(array[i].ToString());
}
于 2013-10-31T13:46:56.207 に答える