我剛剛學習F#並將C#擴展方法的庫轉換爲F#。我目前正在實施一個名爲ConvertFirstLetterToUppercase功能基於以下的C#實現:F#字符串操作的優化
public static string ConvertFirstLetterToUppercase(this string value) {
if (string.IsNullOrEmpty(value)) return value;
if (value.Length == 1) return value.ToUpper();
return value.Substring(0, 1).ToUpper() + value.Substring(1);
}
的F#實現
[<System.Runtime.CompilerServices.ExtensionAttribute>]
module public StringHelper
open System
open System.Collections.Generic
open System.Linq
let ConvertHelper (x : char[]) =
match x with
| [| |] | null -> ""
| [| head; |] -> Char.ToUpper(head).ToString()
| [| head; _ |] -> Char.ToUpper(head).ToString() + string(x.Skip(1).ToArray())
[<System.Runtime.CompilerServices.ExtensionAttribute>]
let ConvertFirstLetterToUppercase (_this : string) =
match _this with
| "" | null -> _this
| _ -> ConvertHelper (_this.ToCharArray())
有人能告訴我利用更自然的F#更簡潔的方式句法?
謝謝大家的回答,我學到了一些新的操作符以及如何使用模式匹配。 :-)我猜下一步?性能測試?大聲笑 – 2010-08-03 19:50:47