Подтвердить что ты не робот

Как разбить число на отдельные цифры в С#?

Скажем, у меня 12345.

Мне нужны отдельные элементы для каждого номера. Строка будет делать или даже индивидуальный номер.

Есть ли у метода .Split перегрузка для этого?

4b9b3361

Ответ 1

Я бы использовал модуль и цикл.

int[] GetIntArray(int num)
{
    List<int> listOfInts = new List<int>();
    while(num > 0)
    {
        listOfInts.Add(num % 10);
        num = num / 10;
    }
    listOfInts.Reverse();
    return listOfInts.ToArray();
}

Ответ 2

Что-то вроде этого будет работать, используя Linq:

string result = "12345"
var intList = result.Select(digit => int.Parse(digit.ToString()));

Это даст вам список индексов IEnumerable.

Если вы хотите IEnumerable строк:

var intList = result.Select(digit => digit.ToString());

Ответ 3

Ну, строка является IEnumerable и также реализует индекс, поэтому вы можете перебирать ее или ссылаться на каждый символ в строке по индексу.

Самый быстрый способ получить то, что вам нужно, - это, вероятно, метод ToCharArray() для String:

var myString = "12345";

var charArray = myString.ToCharArray(); //{'1','2','3','4','5'}

Затем вы можете преобразовать каждый Char в строку или проанализировать их в байтах или целых числах. Здесь Linq-y способ сделать это:

byte[] byteArray = myString.ToCharArray().Select(c=>byte.Parse(c.ToString())).ToArray();

Немного более результативен, если вы используете строки ASCII/Unicode:

byte[] byteArray = myString.ToCharArray().Select(c=>(byte)c - 30).ToArray();

Этот код будет работать, только если вы уверены, что каждый элемент является числом; В противном случае синтаксический разбор выдаст исключение. Простое Regex, которое проверит это, верно, это "^\d + $" (соответствует полной строке, состоящей из одного или нескольких цифровых символов), используемой в статическом методе Regex.IsMatch().

Ответ 4

Вы можете просто сделать:

"123456".Select(q => new string(q,1)).ToArray();

для перечисления целых чисел в соответствии с запросом комментариев вы можете:

"123456".Select(q => int.Parse(new string(q,1))).ToArray();

Он немного слаб, так как он предполагает, что строка действительно содержит числа.

Ответ 5

Вот какой код может помочь вам. Строки можно рассматривать как массив символов

string numbers = "12345";
int[] intArray = new int[numbers.Length];
for (int i=0; i < numbers.Length; i++)
{
   intArray[i] = int.Parse(numbers[i]);
}

Ответ 6

Методы подстроки и объединения могут использоваться для этого оператора.

string no = "12345";
string [] numberArray = new string[no.Length];
int counter = 0;

   for (int i = 0; i < no.Length; i++)
   {
     numberArray[i] = no.Substring(counter, 1); // 1 is split length
     counter++;
   }

Console.WriteLine(string.Join(" ", numberArray)); //output >>> 0 1 2 3 4 5