中文处理(全角/半角)

我们在做程序的的时候经常要处理用户输入,作为我们的主要语言中文,经常会出现全角、半角的问题,这会在查询时给我们带来很多麻烦。

代码如下:

ContractedBlock.gif ExpandedBlockStart.gif 中文处理扩展
        public static void Example(string userInput)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
string sbc = userInput.ToSBC(); //转全角
            
//具体操作,如存入数据库 
            string dbc = userInput.ToDBC();//转半角
            
//具体操作,如存入数据库 
        }

ExpandedBlockStart.gifContractedBlock.gif        
/**//// <summary>
        
/// 转全角(SBC case)
        
/// </summary>
        
/// <param name="input">任意字符串</param>
        
/// <returns>全角字符串</returns>

        public static string ToSBC(this string input)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
char[] c = input.ToCharArray();
            
for (int i = 0; i < c.Length; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
if (c[i] == 32)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    c[i] 
= (char)12288;
                    
continue;
                }

                
if (c[i] < 127)
                    c[i] 
= (char)(c[i] + 65248);
            }

            
return new string(c);
        }

ExpandedBlockStart.gifContractedBlock.gif        
/**//// <summary>
        
/// 转半角(DBC case)
        
/// </summary>
        
/// <param name="input">任意字符串</param>
        
/// <returns>半角字符串</returns>

        public static string ToDBC(this string input)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
char[] c = input.ToCharArray();
            
for (int i = 0; i < c.Length; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
if (c[i] == 12288)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    c[i] 
= (char)32;
                    
continue;
                }

                
if (c[i] > 65280 && c[i] < 65375)
                    c[i] 
= (char)(c[i] - 65248);
            }

            
return new string(c);
        }


中文处理中另一个常用的是获取拼音首字母,如:中华人民共和国,首字母为ZHRMGHG。很多库存管理程序中都将这个作为助记码,用作快速查询。
这里只给出扩展定义和示例,具体实现网上很多,但大部分都不能解决多音字的问题。

ContractedBlock.gif ExpandedBlockStart.gif Code
        public static void Example2(string productName)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
string shortName = productName.GetChineseSpell();
        }


ExpandedBlockStart.gifContractedBlock.gif        
/**//// <summary>
        
/// 获取汉字拼音首字母
        
/// </summary>
        
/// <param name="s">输入</param>
        
/// <returns>汉字拼音首字母,其它字符原样返回</returns>

        public static string GetChineseSpell(this string s)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
return null;//请自行完成
        }


还有中文简体繁体互转,也可以扩展进来。

转载于:https://www.cnblogs.com/lidj/archive/2011/10/27/2226801.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值