我有一个值为{ "01.0", "01.4", "01.5", "0.20", "02.5", "02.6", "03.0", "03.2" }
的字符串数组我如何使用C#过滤整数值(1,2,3)?整数值的滤波器阵列
回答
首先做一个选择将字符串值转换为小数。然后使用余数函数来查找哪些值的余数为零时除以1。这应该只能得到整数值。
var array = new[]{"01.0", "01.4", "01.5", "02.0", "02.5", "02.6", "03.0", "03.2"};
array.Select(i => Decimal.Parse(i)).Where(d => Decimal.Remainder(d, 1) == 0);
如果在运行代码的操作系统中选择的区域性文件不使用'.'作为小数定界符,这将不起作用。另外,“decimal”和“Remainder”对于这项工作来说是不必要的重量级工具。最后,你需要过滤出重复。 – Jon 2011-04-06 18:37:02
伟大的NerdFury。我想我错过了对剩余计算的思考。 – user583126 2011-04-06 18:48:08
@Jon - 我认为混乱是“0.20”的记录。我认为这是一个错字,因为这个格式与其他格式不一致,以及这个问题的表述方式不一致。问题并不是说需要将重复项过滤掉,但在您的解决方案中,这是必要的。我的解决方案可以像您的解决方案一样轻松实现全球化。而在“重量级”方面 - 表现明智的是,我做了一个测试,其中我筛选了1000000次。我的解决方案每次快40ms。 – NerdFury 2011-04-06 19:01:50
只要你的数组是字符串,或者可以转换成字符串,你可以使用int.Parse(array [here])。
或int.TryParse()以获取无例外的方法。 – 2011-04-06 18:28:37
您将得到FormatException“输入字符串的格式不正确。” – user583126 2011-04-06 18:33:42
解析字符串彩车,只选择那些整数摔掉重复的条目:
var input = new[] { "01.0", "01.4", "01.5", "0.20", "02.5",
"02.6", "03.0", "03.2" };
var integers = input.Select(i =>
double.Parse(i,
System.Globalization.CultureInfo.InvariantCulture))
.Where(d => d == (int)d)
.Distinct().ToArray();
答案编辑,以兼顾OP后来的评论。
thnx乔恩。我也很喜欢你的答案,但是不允许我检查2个答案:) – user583126 2011-04-06 19:05:36
var array = new[] { "01.0", "01.4", "01.5", "02.0", "02.5", "02.6", "03.0", "03.2" };
int foo;
var integers = (from a in array where decimal.Remainder(decimal.Parse(a), 1) == 0 select (int)decimal.Parse(a));
foreach (var integer in integers)
{
Console.WriteLine(integer);
}
Console.ReadLine();
- 1. 滤波器阵列
- 2. 滤波器阵列
- 3. 滤波器阵列
- 4. 滤波器阵列与整型
- 5. 滤波器阵列子阵
- 6. 掩蔽阵列的中值滤波器
- 7. JavaScript的滤波器阵列
- 8. 阵列的角度滤波器阵列
- 9. 阵列内的滤波器阵列
- 10. 滤波器阵列由值与PHP
- 11. 滤波阵列
- 12. 滤波阵列
- 13. 滤波器阵列 - SWIFT
- 14. 滤波器阵列/反应
- 15. 滤波器在C#阵列
- 16. 滤波器阵列对特定参数
- 17. 滤波器阵列由指数
- 18. 滤波器阵列返回参数
- 19. 从滤波阵列
- 20. 滤波阵列段
- 21. 滤波器阵列的关键
- 22. 的Javascript合并/滤波器阵列
- 23. Numpy中的滤波器阵列
- 24. NSPredicate滤波器阵列,用于NSDate的
- 25. 带滤波值转换器的Aurelia阵列观测器
- 26. 滤波器阵列和计数在Javascript的过滤元件
- 27. 如何写滤波器检查阵列
- 28. VB.Net滤波器阵列等效于VB6
- 29. MATLAB多维滤波器阵列
- 30. 滤波器2名维阵列和PHP
你是什么意思的过滤器?你的意思是选择索引1,2和3的值吗? – 2011-04-06 18:27:16
我同意@Chris。需要更多信息。如何仅从数组中返回1,2,3?基本上将所有数字转换为整数并删除所有重复项? – 2011-04-06 18:28:59
我们应该能够选择任何形式为01.0(即1),02.0(是2),03.0 ...等等的值。 – user583126 2011-04-06 18:29:02