C#里面全角和半角的自由转换

本文提供了半角转全角及全角转半角的具体实现方式,包括直接利用Unicode编码进行转换的方法,以及更为简洁的半全角互换函数。通过这些方法可以轻松地将输入的文本从一种形式转换为另一种形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1、半角转全角

 1 None.gif =   " hello World " .ToCharArray();
 2 None.gif             for ( int  i  =   0 ; i  <  c.Length; i ++ )
 3 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
 4InBlock.gif                byte[] b = System.Text.Encoding.Unicode.GetBytes(c,i,1);
 5InBlock.gif                if(b.Length == 2)
 6ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
 7InBlock.gif                    if(b[1== 0)
 8ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
 9InBlock.gif                        b[0]=(byte)(b[0]-32);
10InBlock.gif                        b[1]=255;
11InBlock.gif                        c[i]=System.Text.Encoding.Unicode.GetChars(b)[0];
12ExpandedSubBlockEnd.gif                    }

13ExpandedSubBlockEnd.gif                }

14ExpandedBlockEnd.gif            }

15 None.gif             string  strNew = new   string (c);
16 None.gif

2、全角转半角
 1 None.gif string  QJstr  =   " hello,Amigo  quanjiao字符 " ;
 2 None.gif             char [] c  =  QJstr.ToCharArray();
 3 None.gif             for ( int  i  =   0 ; i  <  c.Length; i ++ )
 4 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
 5InBlock.gif                byte[] b = System.Text.Encoding.Unicode.GetBytes(c,i,1);
 6InBlock.gif                if(b.Length == 2)
 7ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
 8InBlock.gif                    if(b[1== 255)
 9ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
10InBlock.gif                        b[0=(byte)(b[0]+32);
11InBlock.gif                        b[1= 0;
12InBlock.gif                        c[i] = System.Text.Encoding.Unicode.GetChars(b)[0];
13ExpandedSubBlockEnd.gif                    }

14ExpandedSubBlockEnd.gif                }

15ExpandedBlockEnd.gif            }

16 None.gif             string  strNew = new   string (c);

3、其他方法
 1 ContractedBlock.gif ExpandedBlockStart.gif   半全角互换 #region 半全角互换
 2ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
 3InBlock.gif        /// 转全角的函数(SBC case)
 4InBlock.gif        /// </summary>
 5InBlock.gif        /// <param name="input">任意字符串</param>
 6InBlock.gif        /// <returns>全角字符串</returns>
 7InBlock.gif        ///<remarks>
 8InBlock.gif        ///全角空格为12288,半角空格为32
 9InBlock.gif        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
10ExpandedSubBlockEnd.gif        ///</remarks>        

11InBlock.gif        public static string ToSBC(string input)
12ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
13InBlock.gif            //半角转全角:
14InBlock.gif            char[] c = input.ToCharArray();
15InBlock.gif            for (int i = 0; i < c.Length; i++)
16ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
17InBlock.gif                if (c[i] == 32)
18ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
19InBlock.gif                    c[i] = (char)12288;
20InBlock.gif                    continue;
21ExpandedSubBlockEnd.gif                }

22InBlock.gif                if (c[i] < 127 && c[i] > 32)
23ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
24InBlock.gif                    c[i] = (char)(c[i] + 65248);
25ExpandedSubBlockEnd.gif                }

26ExpandedSubBlockEnd.gif            }

27InBlock.gif            return new string(c);
28ExpandedSubBlockEnd.gif        }

29InBlock.gif
30ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
31InBlock.gif        /// 转半角的函数(DBC case)
32InBlock.gif        /// </summary>
33InBlock.gif        /// <param name="input">任意字符串</param>
34InBlock.gif        /// <returns>半角字符串</returns>
35InBlock.gif        ///<remarks>
36InBlock.gif        ///全角空格为12288,半角空格为32(此处不必转空格)
37InBlock.gif        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
38ExpandedSubBlockEnd.gif        ///</remarks>

39InBlock.gif        public static string ToDBC(string input)
40ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
41InBlock.gif            char[] c = input.ToCharArray();
42InBlock.gif            for (int i = 0; i < c.Length; i++)
43ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
44InBlock.gif                if (c[i] == 12288)
45ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
46InBlock.gif                    c[i] = (char)32;
47InBlock.gif                    continue;
48ExpandedSubBlockEnd.gif                }

49InBlock.gif                if (c[i] > 65280 && c[i] < 65375)
50ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
51InBlock.gif                    c[i] = (char)(c[i] - 65248);
52ExpandedSubBlockEnd.gif                }

53ExpandedSubBlockEnd.gif            }

54InBlock.gif            return new string(c);
55ExpandedSubBlockEnd.gif        }

56ExpandedBlockEnd.gif        #endregion

57 None.gif


转: http://www.haoyu63.com/article.asp?id=33

转载于:https://www.cnblogs.com/Dragon-China/archive/2007/03/16/677277.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值