给定一个字符串
string result = "01234"
我想从字符串中获取单独的整数0,1,2,3,4。
怎么做?
以下代码为我提供了 ascii值
List<int> ints = new List<int>();
foreach (char c in result.ToCharArray())
{
ints.Add(Convert.ToInt32(c));
}
答案 0 :(得分:4)
List<int> integers = new List<int>(text.Length);
foreach (char c in text)
{
integers.Add(c - '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'; });
原始回答
其他人建议使用ToCharArray
。您不需要这样做 - 字符串已经实现IEnumerable<char>
,因此您已经可以将其视为一系列字符。然后,您只需将每个字符数字转换为整数表示;最简单的方法是减去字符'0'的Unicode值:
IEnumerable<int> digits = text.Select(x => x - '0');
如果您想在List<int>
中使用此功能,请执行以下操作:
List<int> digits = text.Select(x => x - '0').ToList();
答案 1 :(得分:3)
您可以使用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()));
}
答案 2 :(得分:3)
循环字符并将每个字符转换为数字。你可以将它们放在一个数组中:
int[] digits = result.Select(c => c - '0').ToArray();
或者你可以直接遍历它们:
foreach (int digit in result.Select(c => c - '0')) {
...
}
编辑:
当您澄清使用框架2.0时,可以在循环中应用相同的计算:
List<int> ints = new List<int>(result.Length);
foreach (char c in result) {
ints.Add(c - '0');
}
注意:在创建列表时指定容量,这消除了列表调整自身大小的需要。您不需要使用ToCharArray来循环字符串中的字符。
答案 3 :(得分:2)
string result = "01234";
List<int> list = new List<int>();
foreach (var item in result)
{
list.Add(item - '0');
}
答案 4 :(得分:1)
索引到字符串中以提取每个字符。将每个字符转换为数字。代码留给读者练习。
答案 5 :(得分:1)
另一种解决方案......
string numbers = "012345";
List<int> list = new List<int>();
foreach (char c in numbers)
{
list.Add(int.Parse(c.ToString()));
}
不需要从字符串中执行char数组,因为字符串可以像数组一样枚举。
此外,ToString()
会将其设为字符串,因此int.Parse
会为您提供数字,而不是转换char
时获得的ASCII值。
答案 6 :(得分:0)
List<int> ints = new List<int>();
foreach (char c in result.ToCharArray())
{
ints.Add(Convert.ToInt32(c));
}
答案 7 :(得分:0)
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;
}