<commit_before>---
layout: post
title: 拼音首字母
categories: c#
description: 获取中文的拼音首字母
---

[拼音首字母](http://blog.lingkeyang.com/2017/09/05/%E4%B8%AD%E6%96%87%E5%8F%96%E6%8B%BC%E9%9F%B3%E9%A6%96%E5%AD%97%E6%AF%8D/)

## 最近做东西，需要获取中文的拼音首字母，查询网站整理后代码如下，效果不错

- 需要注意的地方
	+ 字符编码的生成：(bytes[1] << 8) + bytes[0]

```csharp
private static string pinyinHeaders = "<KEY>";


public string getPinYinHeader(string strText)
{
	if (string.IsNullOrEmpty(strText))
		return strText;

	var upStr = strText.ToUpper();
	if (isCharacter(upStr))
		return upStr;

	var bytes = System.Text.Encoding.Unicode.GetBytes(strText);

	if (bytes.Length == 2)
	{
		var code = (bytes[1] << 8) + bytes[0];

		if (code >= 19968 && code <= 40869)
			return pinyinHeaders[code - 19968] + "";
	}

	return (char)('A' + UnityEngine.Random.Range(0, 'Z' - 'A')) + "";
}
```


[参考网站](http://bbs.csdn.net/topics/391987561?page=1)<commit_msg>commit<commit_after>---
layout: post
title: 拼音首字母
categories: c#
description: 获取中文的拼音首字母
---

[拼音首字母](http://blog.lingkeyang.com/2017/09/05/%E4%B8%AD%E6%96%87%E5%8F%96%E6%8B%BC%E9%9F%B3%E9%A6%96%E5%AD%97%E6%AF%8D/)

## 最近做东西，需要获取中文的拼音首字母，查询网站整理后代码如下，效果不错

- 需要注意的地方
	+ 字符编码的生成：(bytes[1] << 8) + bytes[0]

```csharp
private static string pinyinHeaders = "<KEY>";


public string getPinYinHeader(string strText)
{
	if (string.IsNullOrEmpty(strText))
		return strText;

	var upStr = strText.ToUpper();
	if (isCharacter(upStr))
		return upStr;

	var bytes = System.Text.Encoding.Unicode.GetBytes(strText);

	if (bytes.Length == 2)
	{
		var code = (bytes[1] << 8) + bytes[0];

		if (code >= 19968 && code <= 40869)
			return pinyinHeaders[code - 19968] + "";
	}

	return (char)('A' + Random.Range(0, 'Z' - 'A')) + "";
}
```


[参考网站](http://bbs.csdn.net/topics/391987561?page=1)
{'fraction_non_alphanumeric': 0.19909245604083947, 'fraction_numerical': 0.07487237663074305, 'mean_word_length': 4.7272727272727275, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2342486', 'n_tokens_mistral': 945, 'n_tokens_neox': 922, 'n_words': 121}