using System; using System.Web; using System.Text; namespace quanbanjiao { public class Class1 { /**/ /// <summary> /// 判断字符是否英文半角字符或标点 /// </summary> /// <remarks> /// 32 空格 /// 33-47 标点 /// 48-57 0~9 /// 58-64 标点 /// 65-90 A~Z /// 91-96 标点 /// 97-122 a~z /// 123-126 标点 /// </remarks> public static bool IsBjChar(char c) { int i = (int)c; return i >= 32 && i <= 126; } /**/ /// <summary> /// 判断字符是否全角字符或标点 /// </summary> /// <remarks> /// <para>全角字符 - 65248 = 半角字符</para> /// <para>全角空格例外</para> /// </remarks> public static bool IsQjChar(char c) { if (c == '\u3000') return true; int i = (int)c - 65248; if (i < 32) return false; return IsBjChar((char)i); } /**/ /// <summary> /// 将字符串中的全角字符转换为半角 /// </summary> public static string ToBj(string type,string s) { if (s == null || s.Trim() == string.Empty) return s; StringBuilder sb = new StringBuilder(s.Length); for (int i = 0; i < s.Length; i++) { if (s[i] == '\u3000') sb.Append('\u0020'); else if (IsQjChar(s[i])) sb.Append((char)((int)s[i] - 65248)); else sb.Append(s[i]); } //如果是int类型的,则只能输入int类型,否则自动设为0 if (type.ToLower() == "int") { try { Convert.ToInt32(sb.ToString()); } catch { return "0"; } } //如果是float或double类型的,则只能输入这两种类型,否则自动设为0 if (type.ToLower() == "float" || type.ToLower() == "double") { try { Convert.ToDouble(sb.ToString()); } catch { return "0"; } } return sb.ToString(); } } }
测试的例子: using System; using System.Web; using quanbanjiao;//项目名称为quanbanjiao namespace quanbanjiao { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { TextBox1.Text = Class1.ToBj("string", TextBox1.Text.Trim()); } } }