全角・半角・ひらがな・カタカナ
アルファベットの大文字/小文字を区別せずに文字列を比較するのはよくあることですが、
全角・半角・ひらがな・カタカナに対応する方法もあるようです。
以前せっかく調べたので忘れないようにメモしておこう。
open System.Globalizationlet contains (value:string) source =
let compareInfo = CompareInfo.GetCompareInfo("ja-JP")
let options =
CompareOptions.IgnoreCase // 大文字・小文字区別なし
||| CompareOptions.IgnoreKanaType // ひらがな・カタカナ区別なし
||| CompareOptions.IgnoreWidth // 全角・半角区別なし
compareInfo.IndexOf(source, value, options) > -1
let test () =
"雨ニモマケズ" |> contains "まけず" |> printfn "%b" // true
"全角でF#" |> contains "F#" |> printfn "%b" // true
"F♯" |> contains "F#" |> printfn "%b" // false