如何在c#中将数字拆分成单个数字?

时间:2011-01-26 18:48:45

标签: c# string

说我有12345。

我想为每个号码添加个别项目。字符串可以做甚至个别数字。

.Split方法是否有重载?

6 个答案:

答案 0 :(得分:38)

我使用模数和循环。

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();
}

答案 1 :(得分:19)

这样的东西可以使用Linq:

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

这将为您提供一个IEnumerable的整数列表。

如果你想要一个IEnumerable字符串:

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

答案 2 :(得分:8)

嗯,字符串是IEnumerable并且还实现了索引器,因此您可以通过索引遍历它或引用字符串中的每个字符。

获得所需内容的最快方法可能是字符串的ToCharArray()方法:

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()静态方法中使用。

答案 3 :(得分:6)

您可以这样做:

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

有一个可枚举的整数,根据评论请求,您可以:

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

它有点弱,因为它假设字符串实际上包含数字。

答案 4 :(得分:1)

以下是一些可能对您有帮助的代码。字符串可以被视为一个字符数组

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

答案 5 :(得分:1)

Substring和Join方法可用于此语句。

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