LINQ try to get a list of int from string – 如何使用Linq在String上取出所有數字出來

今天要為同事解決一個 在ASP.Net MVC [.Net]將String 轉成List of Int的問題

情況是這樣的:
公司的一個ASP.Net MVC 的Project 上..客戶會在 WebGrid上的checkbox上選擇需要的東西..
我的同事便寫了一個隱藏的field 每當客戶選擇或取消選項時..
他用了Javascript 來把數據append 到隱藏的field上
他便用”|” 來把數據分隔
但是我們還是要做一些Validation
避免數據有問題時..會令到這個程式碼/程序出現問題
E.G.
1|ab|| | 3 |4|
有空格或有字母時..當把數據轉到List Of Int時便會出現錯誤了

由於他工作放大假中..
所以我便要去解決他沒有解決的問題了
就是用.net去把這一個 String轉成 List of Int..

開頭我都有一些不知如何是好..
因為可以用一個比較簡單的方法..
但是可能要寫多很多的程式碼
就是先建立一個StringArray..
之後用Int.TryParse來把 成功認到是Int的 數據加進另一個List of Int上..
感覺不太好..

做了一些research 之後終於找到解決方法了:
解決方法:

我們可以嘗試使用LINQ 的方法去解決這個問題

  // Input
  string tempInput = "1|ab|| | 3 |4|";

  // This value is used for int.TryParse reference
  int tempVal=0;
  List intList = (from i in tempInput.Split('|').ToList()
                                          where int.TryParse(i, out tempVal)
                                          select  int.Parse(i)).ToList();
  int noOfInt = intList.Count();
  // Output number of integer recognised 
  Console.WriteLine("No of Int: " + noOfInt.ToString());
  
  for(int i = 0; i< intList.Count(); i++){
  	// Output the recognised integer one by one
  	Console.WriteLine(intList[i].ToString());
  }
  

Use Linq to extract List of Integer from string

Happy Coding

3 thoughts on “LINQ try to get a list of int from string – 如何使用Linq在String上取出所有數字出來

    1. ShareChiWai Post author

      Thanks Sakamoto San, Yeah, did not realise you can do it on Regular Expression too. Could you show me how to extract decimal places too?
      Thanks very much, I learnt a lot from you =)

      Reply

Leave a Reply