Como dividir um número em dígitos individuais em c #?

Digamos que eu tenha 12345.

Eu gostaria de itens individuais para cada número. Uma String faria ou até mesmo um número individual.

O método .Split tem uma sobrecarga para isso?

Eu usaria o módulo e um loop.

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

Algo como isto irá funcionar, usando o Linq:

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

Isto lhe dará uma lista IEnumerable de ints.

Se você quiser um IEnumerable de seqüências de caracteres:

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

Bem, uma string é um IEnumerable e também implementa um indexador, então você pode iterar através dele ou referenciar cada caractere na string por index.

A maneira mais rápida de obter o que você deseja é provavelmente o método ToCharArray () de uma String:

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

Você pode então converter cada Char em uma string ou analisá-los em bytes ou inteiros. Aqui está uma maneira Linq-y para fazer isso:

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

Um pouco mais de desempenho se você estiver usando strings ASCII / Unicode:

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

Esse código só funcionará se você tiver certeza de que cada elemento é um número; otherisw a análise lançará uma exceção. Um Regex simples que verificará se isso é verdadeiro é “^ \ d + $” (corresponde a uma cadeia completa que consiste em um ou mais caracteres de dígitos), usado no método estático Regex.IsMatch ().

Você pode simplesmente fazer:

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

para ter um enumerável de inteiros, como por solicitação de comentário, você pode:

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

É um pouco fraco, pois assume que a string contém números.

Aqui está algum código que pode ajudá-lo. Strings podem ser tratadas como uma matriz de caracteres

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

Os methods Substring e Join são utilizáveis ​​para esta declaração.

 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