我在JavaScript中做了一個簡單的ceasar密碼,我需要在f#中重新生成它。我使用javascript中的charCodeAt()方法將字符串中的單個字符轉換爲unicode值。有沒有人知道如何在F#中做到這一點,或者是否有類似的命令charCodeAt?我已經找遍了幾個小時,而且我沒有時間了。如何將字符轉換爲unicode值在f#
感謝
我在JavaScript中做了一個簡單的ceasar密碼,我需要在f#中重新生成它。我使用javascript中的charCodeAt()方法將字符串中的單個字符轉換爲unicode值。有沒有人知道如何在F#中做到這一點,或者是否有類似的命令charCodeAt?我已經找遍了幾個小時,而且我沒有時間了。如何將字符轉換爲unicode值在f#
感謝
如果你有一個字符,然後只需將它轉換爲整數:
> int 'a';;
val it : int = 97
如果你有一個字符串,索引結合這樣的:
> int ("xyza".[3]);;
val it : int = 97
要處理基本多語言平面以外的代碼點,我相信你會想要使用System.Char.ConvertToUtf32
,例如
let input = "\uD800\uDC00\u0061\u0300\u00C6"
System.Char.ConvertToUtf32(input, 0) //gives 65536, which is good
int input.[0] //gives 55296, not what you want
爲了有效地使用它,你需要這樣的幫助從System.Globalization.StringInfo
結合,否則,例如,你會得到一個例外,如果你在上面的例子中嘗試System.Char.ConvertToUtf32(input, 1)
。類似的,
open System.Globalization
let si = StringInfo(input)
let teArr = Array.init si.LengthInTextElements (fun i -> si.SubstringByTextElements(i,1))
System.Char.ConvertToUtf32(teArr.[0], 0) //65536
System.Char.ConvertToUtf32(teArr.[1], 0) //97
System.Char.ConvertToUtf32(teArr.[2], 0) //198