1

6 桁の数字を解析し、各文字を取得して配列に配置できるようにしたい: "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

私が考えることができる最も簡単なことは、それをchararrayに変換することです:

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#で文字列をintに解析する方法です

于 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 に答える