回答
var values = new string[] { "1", "2", "3" };
values.Select(x => Int32.Parse(x)).ToArray();
Int32.TryParse是更快的Int32.Parse – 2010-06-21 10:00:10
而这实际上并没有给一个数组......并且不是填充这样一个数组的“最快”(问题)方式。但除此之外...... – 2010-06-21 10:02:51
a)它返回的数据结构与您要求的不同,b)Marc Gravell的答案比其他人在这里的答案要好一个数量级? – 2010-06-21 10:02:59
迭代和转换。
我建议迭代和int.TryParse()
Which one is faster in processing and conversion int.Parse(), int.TryParse(), Convert.Int32()
请参阅Microsoft Parse , TryParse and ConvertTo
的比较是我知道有没有快速的方式,但你可以用一个“短的路“:
var numbers = new[] {"1", "2", "3"};
var result = numbers.Select(s => int.Parse(s));
int[] resultAsArray = result.ToArray();
如果你使用PLINK,你可以并行计算值。
string[] arr1 = {"1","2","3"};
int[] arr2 = Array.ConvertAll(arr1, s => int.Parse(s));
采用Array.ConvertAll
确保(不同于LINQ Select
/ToArray
),该阵列是在合适大小初始化。你可以尽可能获得遮阳更快的展开,但并不多:
int[] arr2 = new int[arr1.Length];
for(int i = 0 ; i < arr1.Length ; i++) {
arr2[i] = int.Parse(arr[i]);
}
如果你需要的东西更快还是(或许是大容量文件/数据处理),然后写自己的解析可以帮助;内置的处理很多的边缘情况 - 如果你的数据更简单,你真的可以减少这一点。
另一种可选择的解析器的例子:
public static unsafe int ParseBasicInt32(string s)
{
int len = s == null ? 0 : s.Length;
switch(s.Length)
{
case 0:
throw new ArgumentException("s");
case 1:
{
char c0 = s[0];
if (c0 < '0' || c0 > '9') throw new ArgumentException("s");
return c0 - '0';
}
case 2:
{
char c0 = s[0], c1 = s[1];
if (c0 < '0' || c0 > '9' || c1 < '0' || c1 > '9') throw new ArgumentException("s");
return ((c0 - '0') * 10) + (c1 - '0');
}
default:
fixed(char* chars = s)
{
int value = 0;
for(int i = 0; i < len ; i++)
{
char c = chars[i];
if (c < '0' || c > '9') throw new ArgumentException("s");
value = (value * 10) + (c - '0');
}
return value;
}
}
}
关于ConvertAll的有趣点,不知道! – 2010-06-21 09:53:19
我可能会做的事:
string[] array = new[] { "1", "2" }; // etc.
int[] ints = array.Select(x => int.Parse(x)).ToArray();
如果我能保证数据将只有整数。
如果不是:
string[] array = new[] { "1", "2" }; // etc.
List<int> temp = new List<int>();
foreach (string item in array)
{
int parsed;
if (!int.TryParse(item, out parsed))
{
continue;
}
temp.Add(parsed);
}
int[] ints = temp.ToArray();
string[] arr = new string[]{ "1", "2", "3" };
int[] lss = (from xx in arr
select Convert.ToInt32(xx)).ToArray();
- 1. 转换INT [] []将字符串
- 2. 如何将字符串转换为int?
- 3. 将字符串转换为int []
- 4. 将字符串类型转换为int
- 5. C:将int转换为字符串
- 6. 将int和char转换为字符串
- 7. 将字符串转换为int - java.lang.NumberFormatException.forInputString
- 8. 将int转换为字符串数组
- 9. 将字符串转换为int c
- 10. LINQ将字符串转换为int
- 11. 将字符串转换为int数组
- 12. 将字符串转换为int
- 13. 如何将字符串转换为Int?
- 14. 将int转换为字符串
- 15. 将字符串转换为int(2)
- 16. 而将字符串转换为int后
- 17. C++将字符串转换为int
- 18. 将int转换为字符
- 19. 如何将字符串与int转换为字符串与双?
- 20. F#将字符串转换为int转换
- 21. 无法将字符串转换为常量字符/字符串*为int *
- 22. 将一个字符串转换成INT
- 23. 转换将int字符串值
- 24. 将一个字符串转换成int
- 25. 如何将提醒int值转换为字符串(字符)
- 26. 将int转换为固定的字符数中的字符串
- 27. 将字符串euler号码转换为int中的int#
- 28. 将int字符串的列表/元组转换为int
- 29. 如何将int slice的字符串转换为int切片?
- 30. 将int转换为字符串,然后返回到int
是肯定的项目仅在字符串格式的整数? – 2010-06-21 09:43:10
是的,只有整数 – 2010-06-21 09:43:55
查看http://stackoverflow.com/questions/1297231/convert-string-to-int-in-one-string-of-code-using-linq – abatishchev 2010-06-21 09:49:32