【发布时间】:2019-11-11 12:52:55
【问题描述】:
假设我有 12345。
我希望每个号码都有单独的项目。一个字符串甚至是一个单独的数字。
.Split 方法对此有重载吗?
【问题讨论】:
假设我有 12345。
我希望每个号码都有单独的项目。一个字符串甚至是一个单独的数字。
.Split 方法对此有重载吗?
【问题讨论】:
我会使用模数和循环。
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();
}
【讨论】:
if(num == 0) { return new int[] {0}; } 或类似的东西,如果开发团队的标准是针对 1 个返回声明等等等。在我原来的帖子中,我说我不是粉丝字符串...我不是 do...whiles 的粉丝...
这样的事情会起作用,使用 Linq:
string result = "12345"
var intList = result.Select(digit => int.Parse(digit.ToString()));
这将为您提供一个 IEnumerable 整数列表。
如果你想要一个 IEnumerable 字符串:
var intList = result.Select(digit => digit.ToString());
或者如果你想要一个字符串列表:
var intList = result.ToList();
【讨论】:
string 的IEnumerable。 (我刚改回来)
digit 是 char,int.Parse 是 string。因此:digit.ToString().
char.GetNumericValue 存在。 ;) 谢谢你的提示! :)
好吧,字符串是一个 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();
只有当您确定每个元素都是数字时,该代码才有效;否则解析会抛出异常。一个简单的正则表达式可以验证这一点是“^\d+$”(匹配由一个或多个数字字符组成的完整字符串),用于 Regex.IsMatch() 静态方法。
【讨论】:
你可以这样做:
"123456".Select(q => new string(q,1)).ToArray();
要拥有可枚举的整数,根据评论请求,您可以:
"123456".Select(q => int.Parse(new string(q,1))).ToArray();
它有点弱,因为它假设字符串实际上包含数字。
【讨论】:
IEnumerable<int>(或等效项)。
这里有一些代码可以帮助你。字符串可以被视为一个字符数组
string numbers = "12345";
int[] intArray = new int[numbers.Length];
for (int i=0; i < numbers.Length; i++)
{
intArray[i] = int.Parse(numbers[i]);
}
【讨论】:
[i] 包含在numbers 中。
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
【讨论】: