2016-12-05 98 views
2

例如,我有字符串「Möller」。我想根據這個鏈接中的十六進制代碼將它轉換爲「Möller」:http://www.codetable.net/hex/f6將字符串中的特殊字符轉換爲Unicode十六進制代碼?

我想檢測所有特殊字符(不是正常的字母數字)並自動轉換它們。

到目前爲止,我所看到的僅僅是正常的Hex。有沒有辦法獲得Unicode十六進制代碼?

謝謝

+0

'字符串編碼= WebUtility.HtmlEncode( 「默勒」);' - 爲您提供了編碼字符串。但是使用十進制,而不是十六進制字符。 –

+0

您之後的格式看起來像XML或HTML。如果是這樣,爲什麼不讓一個適當的作家做它需要做的事情,給定你指定的文檔編碼?你需要一些它不會的東西嗎?無論如何,「ö」有什麼問題?它的許多其他字母,符號......是完全可讀的,這是一個[XY問題](http://meta.stackoverflow.com/tags/xy-problem/info)? –

回答

1

您想匹配任何Unicode字母,但匹配ASCII字母。這是很容易實現與正則表達式:

[\p{L}-[A-Za-z]] 

regex demo

在C#代碼,使用Regex.Replace與匹配評估這些字母轉換爲十六進制代碼。

var s = "Möller"; 
s = Regex.Replace(s, @"[\p{L}-[a-zA-Z]]", m => 
    string.Join(string.Empty, m.Value.Select(c=>string.Format("&#x{0:X};", Convert.ToInt32(c))).ToArray())); 
Console.WriteLine(s); // => Möller 

C# demo

相關問題