3

文字列(10325710)があり、文字列を配列に分割したいと思います。文字列を配列に分割すると、配列はになります{1,0,3,2,5,7,1,0}。文字列には2つ1のsと2つのsがあることに注意してください。0「1」と「0」を分割したくありません。したがって、取得したい配列はです{10,3,2,5,7,10}

何かアドバイス?

私のC#コード:

string myNumber = "10325710";
string[] myArray = myNumber.Select(p => p.ToString()).ToArray();
4

4 に答える 4

16
int[] nums = myNumber.Replace("10", "A")
                     .Select(c => Convert.ToInt32(c.ToString(), 16))
                     .ToArray();

基本的に「10」を「A」に置き換え、各文字を16進数として扱います。

于 2013-01-08T10:59:56.023 に答える
4

さて、いくつかの正規表現をテーブルに置くだけです:

Regex.Split(myNumber, @"(?!^)(?=[1-9])");
于 2013-01-08T11:06:57.043 に答える
1

手動で簡単に行うことができます。

int i = 0;

int len = 0;
for (int j = 0; j < s.Length; j++)
    if (s[j] != '0')
        len++;

int[] result = new int[len];
int index = 0;
while (i < s.Length)
{
    if (i < s.Length - 1 && int.Parse(s[i + 1].ToString()) == 0)
    {
        result[index++] = int.Parse(s[i].ToString()) * 10;
        i += 2;
    }
    else
    {
        result[index++] = int.Parse(s[i].ToString());
        i++;
    }
}

return result;
于 2013-01-08T10:53:24.770 に答える
1

statement:

var myArray=Regex.Matches(myNumber, @"1?\d").Cast<Match>().Select(p => p.ToString()).ToArray();

code:

var myNumber="98765432101032571001210345610789";
var myMatches=Regex.Matches(myNumber, @"1?\d").Cast<Match>();
var myArray=myMatches.Select(p => p.ToString()).ToArray();

var whats_in_myArray="{ "+String.Join(", ", myArray)+" }";
Debug.Print("{0}", whats_in_myArray);

output:

{ 9, 8, 7, 6, 5, 4, 3, 2, 10, 10, 3, 2, 5, 7, 10, 0, 12, 10, 3, 4, 5, 6, 10, 7, 8, 9 }
于 2013-01-08T11:36:16.240 に答える