如果您将Windows Phone模拟器或设备放入日语,韩语或其他非拉丁语言并使用人员应用程序,他们的LongListSelector实现显示日语分组字符,然后是unicode“地球与子午线”字符,其次是az字符:
使用Windows Phone工具包中的LongListSelector,您必须执行自己的手动分组逻辑。如何获取日语/韩语/等名称分组字符列表以及如何确定名称所属的分组字符(因为查看我的第二个屏幕截图,分组字符在用户名中没有出现)?
答案 0 :(得分:3)
简短的回答是:你将hiragana(ま)的unicode值加96,得到相应的片假名(マ)。
您可以通过检查字符的unicode值是否在3040-309F范围内来确定字符是否为平假名。
不幸的是,正如诺亚所提到的,许多名字拼写使用汉字:一个大约40,000个字符的字母表,每个字符都有平假名等价物,并且与周围环境有很多相关联。如果你想支持这些,你需要找一个日语库来帮助你。
仅供参考,片假名偶尔用于代表大写字母,以便在此处解释它们的用法。 (考虑到Metro的小写偏好,我认为片假名更适合)。
如果你只想支持平假名,这里应该有所帮助:
const int KatakanaStartCode = 0x30A0;
const int HiraganaStartCode = 0x3040;
const int HiraganaEndCode = 0x309F;
private char GetGroupChar(string name)
{
// Check for null/blank
// Check for numbers, etc
char firstChar = name[0];
int firstCharCode = (int)firstChar;
bool isHiragana = (HiraganaStartCode <= firstCharCode &&
firstCharCode <= HiraganaEndCode);
if (isHiragana)
{
char katakanaChar = (char)(firstCharCode +
(KatakanaStartCode - HiraganaStartCode));
return katakanaChar;
}
return Char.ToLowerInvariant(firstChar);
}
然后:
string name = "またな たなかあ";
char s = GetGroupChar(name);
Debug.WriteLine(s); // マ
答案 1 :(得分:2)
我对Windows Phone Toolkit一无所知,但基本上,它的工作方式如下:大多数日语名称都有汉字形式(通常是如何编写的,以及显示的内容)。由于汉字形式可能具有模糊的发音,因此也存在用于发音的字段。您可以使用发音字段对名称进行分组。 (并且您可以将发音字段中没有数据的任何名称分组到另一个“其他”组中。)
例如: 汉字:山本次郎 片假名:ヤマモトジロウ
然后你的“分组字符”只是片假名或平假名的列表(或部分列表),这个人会属于“や”或“ヤ”。