C# 将字符串编号转换为数字序列-.Net 2.0

C# 将字符串编号转换为数字序列-.Net 2.0,c#,C#,给一串 string result = "01234" 我想从字符串中得到独立的整数0,1,2,3,4 怎么做 1. 下面的代码给出了ascii值 索引到字符串中以提取每个字符。将每个字符转换为一个数字。代码留给读者作为练习。您可以使用LINQ: var ints = result.Select(c => Int32.Parse(c.ToString())); 编辑: 不使用LINQ,您的循环看起来已经足够好了。只需使用Int32.Parse而不是Convert.T

给一串

string result = "01234"
我想从字符串中得到独立的整数0,1,2,3,4

怎么做

1. 下面的代码给出了ascii值


索引到字符串中以提取每个字符。将每个字符转换为一个数字。代码留给读者作为练习。

您可以使用LINQ:

var ints = result.Select(c => Int32.Parse(c.ToString()));
编辑: 不使用LINQ,您的循环看起来已经足够好了。只需使用Int32.Parse而不是Convert.ToInt32:

List<int> ints = new List<int>();

foreach (char c in result.ToCharArray())
{
    ints.Add(Int32.Parse(c.ToString()));
}

循环字符并将每个字符转换为数字。您可以将它们放入一个数组中:

int[] digits = result.Select(c => c - '0').ToArray();
char[] chars = text.ToCharArray();
int[] integers = Arrays.ConvertAll<char, int>(chars, 
                            delegate(char c) { return c - '0'; });
或者,您可以直接通过它们进行循环:

foreach (int digit in result.Select(c => c - '0')) {
   ...
}
编辑: 当您澄清您使用的是framework 2.0时,您可以在循环中应用相同的计算:

List<int> ints = new List<int>(result.Length);

foreach (char c in result) {
    ints.Add(c - '0');
}

注意:在创建列表时指定容量,这样可以省去列表自身调整大小的需要。您不需要使用ToCharray循环字符串中的字符。

编辑:我没有发现.NET 2.0的要求。如果你打算做很多这类的事情,它可能值得使用,看看后面的部分——特别是如果你可以在使用C3.0的同时仍然以2.0为目标的话。否则:

List<int> integers = new List<int>(text.Length);
foreach (char c in text)
{
    integers.Add(c - '0');
}
如果您想将其列在列表中,只需执行以下操作:

List<int> digits = text.Select(x => x - '0').ToList();
另一个解决方案

string numbers = "012345";
List<int> list = new List<int>();

foreach (char c in numbers)
{
    list.Add(int.Parse(c.ToString()));
}
实际上不需要从字符串中执行char数组,因为字符串可以像数组一样枚举


此外,ToString使其成为字符串,因此int.Parse将为您提供数字,而不是转换字符时获得的ASCII值。

谢谢。实际上是我干的。但我得到的是ASCII值,0得到48,1得到49。如何将它们转换成正确的整数?@stakx:您还希望看到哪些其他数字?你确定int.Parse会处理它们吗?我不认为这里有任何迹象表明需要解决阿拉伯数字等问题。@jdv:这个问题最初没有2.0版本。很酷,我从未见过“1”-“0”==1Hi Jon。在看到大量使用lambda表达式和linq的回复后,我在标题中添加了2.0。
List<char> chars = new List<char>(text);
List<int> integers = chars.ConvertAll(delegate(char c) { return c - '0'; });
char[] chars = text.ToCharArray();
int[] integers = Arrays.ConvertAll<char, int>(chars, 
                            delegate(char c) { return c - '0'; });
IEnumerable<int> digits = text.Select(x => x - '0');
List<int> digits = text.Select(x => x - '0').ToList();
    static int[] ParseInts(string s) {
        int[] ret = new int[s.Length];
        for (int i = 0; i < s.Length; i++) {
            if (!int.TryParse(s[i].ToString(), out ret[i]))
                throw new InvalidCastException(String.Format("Cannot parse '{0}' as int (char {1} of {2}).", s[i], i, s.Length));
        }
        return ret;
    }
string numbers = "012345";
List<int> list = new List<int>();

foreach (char c in numbers)
{
    list.Add(int.Parse(c.ToString()));
}