zoukankan      html  css  js  c++  java
  • SQL 汉字转为首字母大写字母,c#通过汉字获取其首字母大写

    功能:根据返回所有汉字的首字母----

    存储过程中: 调用:select [dbo].[fun_getPY](字段名) as zm from 表名 */ Create function fun_getPY ( @str nvarchar(4000) ) returns nvarchar(4000) AS BEGIN DECLARE @word NCHAR(1),@PY NVARCHAR(4000) SET @PY='' WHILE len(@str)>0 BEGIN SET @word=left(@str,1) --如果非汉字字符,返回原字符 SET @PY=@PY+(CASE WHEN UNICODE(@word)BETWEEN 19968 AND 19968+20901 THEN (SELECT TOP 1 PY FROM( SELECT 'A'as PY,N''as word UNION ALL SELECT 'B',N'簿' UNION ALL SELECT 'C',N'' UNION ALL SELECT 'D',N'' UNION ALL SELECT 'E',N'' UNION ALL SELECT 'F',N'' UNION ALL SELECT 'G',N'' UNION ALL SELECT 'H',N'' UNION ALL SELECT 'J',N'' UNION ALL SELECT 'K',N'' UNION ALL SELECT 'L',N'' UNION ALL SELECT 'M',N'' UNION ALL SELECT 'N',N'' UNION ALL SELECT 'O',N'' UNION ALL SELECT 'P',N'' UNION ALL SELECT 'Q',N'' UNION ALL SELECT 'R',N'' UNION ALL SELECT 'S',N'' UNION ALL SELECT 'T',N'' UNION ALL SELECT 'W',N'' UNION ALL SELECT 'X',N'' UNION ALL SELECT 'Y',N'' UNION ALL SELECT 'Z',N'' )T WHERE word>=@word COLLATE Chinese_PRC_CS_AS_KS_WS ORDER BY PY ASC)ELSE @word END) SET @str=RIGHT(@str,LEN(@str)-1) END RETURN UPPER(@PY) END GO


    程序中:
    #region 汉字获得其大写首字母方法。 ///<summary> /// 判断是否为汉字 ///</summary> ///<param name="chrStr">待检测字符串</param> ///<returns>是汉字返回true</returns> publicbool IsChineseCharacters(string chrStr) { Regex CheckStr =new Regex("[/u4e00-/u9fa5]"); return CheckStr.IsMatch(chrStr); } ///<summary> /// 得到每个汉字的字首拼音码字母(大写) ///</summary> ///<param name="chrStr">输入字符串</param> ///<returns>返回结果</returns> publicstring GetHeadCharacter(string chrStr) { string strHeadString =string.Empty; System.Text.Encoding gb = System.Text.Encoding.GetEncoding("gb2312"); for (int i =0; i < chrStr.Length; i++) { //检测该字符是否为汉字 //if (!IsChineseCharacters(chrStr.Substring(i, 1))) //{ // strHeadString += chrStr.Substring(i, 1); // continue; //} byte[] bytes = gb.GetBytes(chrStr.Substring(i, 1)); string lowCode = System.Convert.ToString(bytes[0] -0xA0, 16); string hightCode = System.Convert.ToString(bytes[1] -0xA0, 16); int nCode = Convert.ToUInt16(lowCode, 16) *100+ Convert.ToUInt16(hightCode, 16); //得到区位码 strHeadString += FirstLetter(nCode); } return strHeadString; } ///<summary> /// 通过汉字区位码得到其首字母(大写) ///</summary> ///<param name="nCode">汉字编码</param> ///<returns></returns> publicstring FirstLetter(int nCode) { if (nCode >=1601&& nCode <1637) return"A"; if (nCode >=1637&& nCode <1833) return"B"; if (nCode >=1833&& nCode <2078) return"C"; if (nCode >=2078&& nCode <2274) return"D"; if (nCode >=2274&& nCode <2302) return"E"; if (nCode >=2302&& nCode <2433) return"F"; if (nCode >=2433&& nCode <2594) return"G"; if (nCode >=2594&& nCode <2787) return"H"; if (nCode >=2787&& nCode <3106) return"J"; if (nCode >=3106&& nCode <3212) return"K"; if (nCode >=3212&& nCode <3472) return"L"; if (nCode >=3472&& nCode <3635) return"M"; if (nCode >=3635&& nCode <3722) return"N"; if (nCode >=3722&& nCode <3730) return"O"; if (nCode >=3730&& nCode <3858) return"P"; if (nCode >=3858&& nCode <4027) return"Q"; if (nCode >=4027&& nCode <4086) return"R"; if (nCode >=4086&& nCode <4390) return"S"; if (nCode >=4390&& nCode <4558) return"T"; if (nCode >=4558&& nCode <4684) return"W"; if (nCode >=4684&& nCode <4925) return"X"; if (nCode >=4925&& nCode <5249) return"Y"; if (nCode >=5249&& nCode <5590) return"Z"; return""; } #endregion

    数据库中 将大写字母 转化为小写字母 可以使用 LOWER(‘stringtoswitch’);

    仅提供代码,不要说自己不会调用奥。首次写博客i,希望大家支持。up!

  • 相关阅读:
    DES CBC java加密 php解密
    CocosCreator入门(一) ------ 简介、安装、微信小游戏
    H5游戏开发----CocosCreator、CocosCreator3D、Cocos2dX差异与选择
    GIT:git -c diff.mnemonicprefix=false -c core.quotepath=false revert --no-edit
    xxx was built without full bitcode" 编译错误解决
    程序猿之GitHub
    【北医三院】生孩、出院等事宜
    Unity:Andriod部分手机频繁闪退,vivo y55a等,Skipped 62 frames! The application may be doing too much work on its main thread
    初识LUA
    Unity3D开发之Matrix4x4矩阵变换
  • 原文地址:https://www.cnblogs.com/cdemo/p/2108613.html
Copyright © 2011-2022 走看看