C# 全角半角字符互转
你在用C#编程的时候,是否遇到过《全角半角字符互转》的情况?
比如:你的前端页面有个框框,让用户输入模糊查找的名字。如果用户输入时中包含有全角字符,而你的DB中存的是半角字符。这个时候直接查DB是【可以】匹配到的。
SQL中不区分全角半角(我用SQL server测试的,其他DB不清楚)。
就算你在用SQL server(SQL查询不区分全角半角),如果你把值从DB取到程序内存以后,再用equals(),contains()等string 函数去处理的时候,就区分全角半角了。
这里提供全角半角互转的函数:
1 /// <summary> 2 /// 全角空格为12288,半角空格为32 3 /// 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 4 /// </summary> 5 /// <param name="input">任意字符串</param> 6 /// <returns>全角字符串</returns> 7 public static String ToSBC(String input) 8 { 9 // 半角转全角: 10 char[] c = input.ToCharArray(); 11 for (int i = 0; i < c.Length; i++) 12 { 13 if (c[i] == 32) 14 { 15 c[i] = (char)12288; 16 continue; 17 } 18 if (c[i] < 127) 19 c[i] = (char)(c[i] + 65248); 20 } 21 return new String(c); 22 } 23 24 /// <summary> 25 /// 全角空格为12288,半角空格为32 26 /// 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 27 /// </summary> 28 /// <param name="input">任意字符串</param> 29 /// <returns>半角字符串</returns> 30 public static String ToDBC(String input) 31 { 32 char[] c = input.ToCharArray(); 33 for (int i = 0; i < c.Length; i++) 34 { 35 if (c[i] == 12288) 36 { 37 c[i] = (char)32; 38 continue; 39 } 40 if (c[i] > 65280 && c[i] < 65375) 41 c[i] = (char)(c[i] - 65248); 42 } 43 return new String(c); 44 }
浙公网安备 33010602011771号