foreach (char c in fInputChinese.ToCharArray())
letters += GetFirstLetterOfPinyin(c.ToString(), fReutrnEmptyWhenFailure);
return letters;
}
/// <summary>
/// 获取一个中文拼音的第一个字母。
/// </summary>
/// <param name="fInputSingleChinese">需要获取字母的一个中文</param>
/// <param name="fReutrnEmptyWhenFailure">当输入不是中文时是否返回空值。True:返回空值;False:返回传入参数的大写</param>
/// <returns>中文拼音的第一个字母</returns>
private static string GetFirstLetterOfPinyin(String fInputSingleChinese, Boolean fReutrnEmptyWhenFailure)
{
byte[] byteArray = System.Text.Encoding.Default.GetBytes(fInputSingleChinese);
//如果是字母,则直接返回
if (byteArray.Length == 1)
{
return fReutrnEmptyWhenFailure
? fInputSingleChinese.ToUpper()
: String.Empty;
}
// 获取范围
short minValue = (short)(byteArray[0]);
short maxValue = (short)(byteArray[1]);
Int64 value = minValue * 256 + maxValue;
foreach (LetterItem letterItem in dictionaryLetter)
{
if (value >= letterItem.MinValue &&
value <= letterItem.MaxValue)
return letterItem.Letter;
}
return "?"; // 未知
}
}
}