我有一個值爲{ "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. JavaScript的濾波器陣列
- 5. 濾波器陣列由值與PHP
- 6. 濾波陣列
- 7. 濾波陣列
- 8. 濾波器在C#陣列
- 9. 濾波器陣列/反應
- 10. 濾波器陣列由指數
- 11. 從濾波陣列
- 12. NSPredicate濾波器陣列,用於NSDate的
- 13. 的Javascript合併/濾波器陣列
- 14. Numpy中的濾波器陣列
- 15. 帶濾波值轉換器的Aurelia陣列觀測器
- 16. MATLAB多維濾波器陣列
- 17. 如何寫濾波器檢查陣列
- 18. lodash:陣列濾波器和對象
- 19. VB.Net濾波器陣列等效於VB6
- 20. 縮小/濾波陣列
- 21. 濾波陣列中Swift3
- 22. 濾波陣列結果
- 23. 濾波陣列在Javascript
- 24. C#濾波器雙[]的值的列表
- 25. PHP濾波器陣列由另一真/假陣列
- 26. 陣列濾波器僅取出值,而不空格
- 27. 夫特:使用字典的濾波器陣列高階函數
- 28. 圖像/高斯濾波器陣列上的內核矩陣3x3
- 29. 帶陷波濾波器和butterworth的濾波器數據
- 30. 濾波的陣列,以在AngularJS
你是什麼意思的過濾器?你的意思是選擇索引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