Скажите, что у меня есть 12345.Как разбить число на отдельные цифры в C#?
Я бы хотел, чтобы отдельные элементы для каждого номера. Строка будет делать или даже индивидуальное число.
Есть ли у метода .Split перегрузка?
Скажите, что у меня есть 12345.Как разбить число на отдельные цифры в C#?
Я бы хотел, чтобы отдельные элементы для каждого номера. Строка будет делать или даже индивидуальное число.
Есть ли у метода .Split перегрузка?
Что-то, как это будет работать, используя Linq:
string result = "12345"
var intList = result.Select(digit => int.Parse(digit.ToString()));
Это даст вам IEnumerable список Интс.
Если вы хотите IEnumerable строк:
var intList = result.Select(digit => digit.ToString());
Ну, строка является IEnumerable, а также реализует индексацию, так что вы можете перемещаться по нему или ссылаться на каждый символ в строке по индексу.
Самый быстрый способ получить то, что вы хотите, вероятно, метод ToCharArray() из строки:
var myString = "12345";
var charArray = myString.ToCharArray(); //{'1','2','3','4','5'}
Вы можете преобразовать каждый Чар в строку, или разобрать их в байтах или целых чисел. Вот Linq-й способ сделать это:
byte[] byteArray = myString.ToCharArray().Select(c=>byte.Parse(c.ToString())).ToArray();
Чуть более производительным, если вы используете строки ASCII/Unicode:
byte[] byteArray = myString.ToCharArray().Select(c=>(byte)c - 30).ToArray();
Этот код будет работать только если вы уверены, что каждый element - число; В противном случае синтаксический разбор выдаст исключение. Простое Regex, которое проверит это, верно, это «^ \ d + $» (соответствует полной строке, состоящей из одного или нескольких цифровых символов), используемой в статическом методе Regex.IsMatch().
Вот какой-то код, который может вам помочь. Строки можно рассматривать как массив символов
string numbers = "12345";
int[] intArray = new int[numbers.Length];
for (int i=0; i < numbers.Length; i++)
{
intArray[i] = int.Parse(numbers[i]);
}
Вторая строка дает ошибку. Не включайте '[i]' с 'числами'. –
Вы можете просто сделать:
"123456".Select(q => new string(q,1)).ToArray();
иметь перечислимого целых чисел, согласно комментарию запросу, вы можете:
"123456".Select(q => int.Parse(new string(q,1))).ToArray();
Он немного слаб, так как предполагает, что строка содержит числа.
Не возвращает что-то из 'IEnumerable
Я бы использовал модуль и петлю.
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();
}
Это хороший способ сделать это. Но это исключает начальный нуль, т. Е. ** 0 ** 123. В случае, если мне требуется запуск ** 0 **. Как это сделать? –
@SaimMehmoodне является номером –
0 является номером, но он будет исключен :) do ... while будет делать трюк – Tommy
Методы подстроки и соединения могут использоваться для этого утверждения.
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
.Правый (.ToString) !? Смысл. Он ничего не делает. – dtb
@ Рэнди, вы изменили свой ответ? Раньше это было правильно, теперь это неправильно. Это вернет 'IEnumerable'' string'. (Я только что изменил его) –
@dtb, что такое путаница? 'digit' является символом' char', а 'int.Parse' принимает' string'. Следовательно: 'digit.ToString()'. –