2012-10-25 134 views

回答

6
var list = numberString.Select(c => Int32.Parse(c.ToString())).ToList(); 

或者,如果你寧願添加到現有列表:

list.AddRange(numberString.Select(c => Int32.Parse(c.ToString())); 
5
var list = new List<int>(); 

list.AddRange(
    from character in numericString 
    select int.Parse(character)); 
5
List<int> numericlist = "2670053157".Select(c => c - '0').ToList(); 
+0

你在那裏做了什麼? 'c - '0'' – Silvermind

+1

@Silvermind - 字符是整數。從'2'(50)中刪除'0'(48)會導致2. –

+0

我不會建議這樣做的唯一原因是因爲它不會正確處理存在非數字字符的情況在字符串中。 –

1

如果你害怕的異常被拋出由於不當的投入,你總是可以去安全路線:

// string input = TextBox1.Text; 
List<int> intList = new List<int>(); 

foreach (char c in input) 
{ 
    int i; 
    if (Int32.TryParse(c.ToString(), out i)) 
    { 
     intList.Add(i); 
    } 
} 
1

從幫手我開始的ThOD:

public static IEnumerable<short> getDigits(long input) 
{ 
    while (input > 0) 
    { 
     yield return (short)(input % 10); 
     input /= 10; 
    } 
} 

然後,如果你想在一個列表中的值,只需調用ToList

List<short> list = getDigits(2670053157).ToList(); 

如果你想在高階位首先你需要Reverse序列:

List<short> list = getDigits(2670053157).Reverse().ToList();