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

20 c# string

说我有12345.

我想要每个号码的单独项目.一个字符串可以做甚至一个单独的数字.

.Split方法是否有重载?

Bif*_*iff 41

我使用模数和循环.

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();
}
Run Code Online (Sandbox Code Playgroud)

  • @SaimMehmood 0123不是一个数字 (6认同)
  • 0是一个数字,但它将被排除:) do ... while会做的伎俩 (2认同)

Ran*_*der 21

使用Linq,这样的东西会起作用:

string result = "12345"
var intList = result.Select(digit => int.Parse(digit.ToString()));
Run Code Online (Sandbox Code Playgroud)

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

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

var intList = result.Select(digit => digit.ToString());
Run Code Online (Sandbox Code Playgroud)

  • .Parse(的ToString)!?感.它没有. (6认同)
  • @Kirk:为什么要将某些内容转换为字符串,只是将其解析回另一种数据类型,而不是直接转换该值?[Char.GetNumericValue](http://msdn.microsoft.com/en-us/library/e7k33ktz.aspx) (5认同)
  • @dtb,有什么困惑?`digit`是`char`,`int.Parse`是`string`.因此:`digit.ToString()`. (4认同)
  • @dtb,这是一个很好的理由.我不知道`char.GetNumericValue`存在.;) 谢谢你的提示!:) (2认同)

Kei*_*thS 8

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

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

var myString = "12345";

var charArray = myString.ToCharArray(); //{'1','2','3','4','5'}
Run Code Online (Sandbox Code Playgroud)

然后,您可以将每个Char转换为字符串,或将它们解析为字节或整数.这是Linq-y的方法:

byte[] byteArray = myString.ToCharArray().Select(c=>byte.Parse(c.ToString())).ToArray();
Run Code Online (Sandbox Code Playgroud)

如果您使用ASCII/Unicode字符串,性能会更高一些:

byte[] byteArray = myString.ToCharArray().Select(c=>(byte)c - 30).ToArray();
Run Code Online (Sandbox Code Playgroud)

只有在您确定每个元素都是数字时,该代码才有效; 另外,解析会引发异常.一个简单的Regex将验证这是真的是"^\d + $"(匹配由一个或多个数字字符组成的完整字符串),在Regex.IsMatch()静态方法中使用.


Fel*_*ano 6

你可以简单地做:

"123456".Select(q => new string(q,1)).ToArray();
Run Code Online (Sandbox Code Playgroud)

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

"123456".Select(q => int.Parse(new string(q,1))).ToArray();
Run Code Online (Sandbox Code Playgroud)

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