在 Windows Phone 上,我想将任何给定的字符串子串成相当于 100 个 ASCII 字符的长度。
String.Length 显然没用,因为中文字符串每个字符使用 3 个字节,丹麦字符串每个字符使用 2 或 4 个字节,俄语字符串每个字符使用 4 个字节。
唯一可用的编码是 UTF-8 和 UTF-16。那我该怎么办?
这个想法是这样的:
private static string UnicodeSubstring(string text, int length)
{
var bytes = Encoding.UTF8.GetBytes(text);
return Encoding.UTF8.GetString(bytes, 0, Math.Min(bytes.Length, length));
}
但是长度需要可以正确地除以每个字符使用的字节数,所以最后一个字符总是正确呈现。