前幾天Insus.NET有寫過一篇《從字元串數組中把數字的元素找出來》http://www.cnblogs.com/insus/p/8001026.html 和它的延伸篇《C# yield關鍵詞使用》http://www.cnblogs.com/insus/p/8003809.html 那是寫一個類 ...
前幾天Insus.NET有寫過一篇《從字元串數組中把數字的元素找出來》http://www.cnblogs.com/insus/p/8001026.html
和它的延伸篇《C# yield關鍵詞使用》http://www.cnblogs.com/insus/p/8003809.html
那是寫一個類別來處理數字元素並收集起來。
開發程式,解決方法不是唯一的。相同的功能實現,方法不止一個。下麵Insus.NET再使用另外的方法來實現,算作對基礎知識的鞏固與掌握。
上面#21至#30行代碼,可以改用yield方法,返回迴圈結果:
class Ak { private string[] _stringArray; public Ak(string[] stringArray) { this._stringArray = stringArray; } public IEnumerable<Digit> Result() { // var result = new List<Digit>(); foreach (string s in _stringArray) { string pattern = "^[0-9]"; Regex regex = new Regex(pattern); if (regex.IsMatch(s)) yield return new Digit(Convert.ToInt32(s)); } // return result; } public void Output() { foreach (Digit d in Result()) { Console.WriteLine(d.ToString()); } } }Source Code
得到的結果與前一篇寫自定義的方法進行驗證的結果一樣。
為了日後方便與維護,你可以把正則驗計的代碼,寫成一個方法,或者是擴展方法,在程式需要正則驗證時,直接使用這個方法即可。達到面向對象的三個要素這一,封裝:
public static bool Match(this string value, string pattern) { Regex regex = new Regex(pattern); return regex.IsMatch(value); }Source Code