簡體   English   中英

如何在f#中將char轉換為unicode值

[英]How to convert a char to unicode value in f#

我在javascript中制作了一個簡單的ceasar密碼,我需要在f#中重新制作它。 我在javascript中使用charCodeAt()方法將字符串中的單個字符轉換為它們的unicode值。 有沒有人知道如何在F#中執行此操作或者是否有類似於charCodeAt的命令? 我已經找了幾個小時,而且我已經沒時間了。

謝謝

要處理Basic Multilingual Plane之外的代碼點,我相信你會想要使用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

如果你有一個char,那么只需將其轉換為整數:

> int 'a';;
val it : int = 97

如果您有一個字符串,請將其與索引器結合使用:

> int ("xyza".[3]);;
val it : int = 97

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM