zoukankan      html  css  js  c++  java
  • C#全角转换成半角并检查

    新建一个项目quanbanjiao,在此项目下新建一个类Class1

     1 using System;
     2 using System.Web;
     3 using System.Text;
     4 
     5 namespace quanbanjiao
     6 {
     7     public class Class1
     8     {
     9         /**/
    10         /// <summary>
    11         /// 判断字符是否英文半角字符或标点
    12         /// </summary>
    13         /// <remarks>
    14         /// 32    空格
    15         /// 33-47    标点
    16         /// 48-57    0~9
    17         /// 58-64    标点
    18         /// 65-90    A~Z
    19         /// 91-96    标点
    20         /// 97-122    a~z
    21         /// 123-126  标点
    22         /// </remarks>
    23         public static bool IsBjChar(char c)
    24         {
    25             int i = (int)c;
    26             return i >= 32 && i <= 126;
    27         }
    28 
    29         /**/
    30         /// <summary>
    31         /// 判断字符是否全角字符或标点
    32         /// </summary>
    33         /// <remarks>
    34         /// <para>全角字符 - 65248 = 半角字符</para>
    35         /// <para>全角空格例外</para>
    36         /// </remarks>
    37         public static bool IsQjChar(char c)
    38         {
    39             if (c == 'u3000') return true;
    40 
    41             int i = (int)c - 65248;
    42             if (i < 32) return false;
    43             return IsBjChar((char)i);
    44         }
    45 
    46         /* http://www.cnblogs.com/roucheng/ */
    47         /// <summary>
    48         /// 将字符串中的全角字符转换为半角
    49         /// </summary>
    50         public static string ToBj(string type,string s)
    51         {
    52             if (s == null || s.Trim() == string.Empty) return s;
    53 
    54             StringBuilder sb = new StringBuilder(s.Length);
    55             for (int i = 0; i < s.Length; i++)
    56             {
    57                 if (s[i] == 'u3000')
    58                     sb.Append('u0020');
    59                 else if (IsQjChar(s[i]))
    60                     sb.Append((char)((int)s[i] - 65248));
    61                 else
    62                     sb.Append(s[i]);
    63             }
    64 
    65             //如果是int类型的,则只能输入int类型,否则自动设为0
    66 
    67             if (type.ToLower() == "int")
    68             {
    69                 try
    70                 {
    71                     Convert.ToInt32(sb.ToString());
    72                 }
    73                 catch
    74                 {
    75                     return "0";
    76                 }
    77 
    78             }
    79 
    80  
    81 
    82             //如果是float或double类型的,则只能输入这两种类型,否则自动设为0
    83             if (type.ToLower() == "float" || type.ToLower() == "double")
    84             {
    85                 try
    86                 {
    87                     Convert.ToDouble(sb.ToString());
    88                 }
    89                 catch
    90                 {
    91                     return "0";
    92                 }
    93             }
    94             return sb.ToString();
    95         }
    96     }
    97 }

     

    测试的例子:

    using System;
    using System.Web;
    using quanbanjiao;//项目名称为quanbanjiao
    
    namespace quanbanjiao
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
    // keleyi.com
            protected void Page_Load(object sender, EventArgs e)
            {
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                TextBox1.Text = Class1.ToBj("string", TextBox1.Text.Trim());
            }
        }
    }
  • 相关阅读:
    如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】
    如何向外行解释什么是内存溢出
    【转】21副GIF动图让你了解各种数学概念
    C++buider IDE补丁
    c++buider2010 中.dfm无法打开设计界面的解决方法
    【转】Eclipse 常用快捷键 (动画讲解)
    修身养性,打磨自己
    毕向东java基础课学习笔记5——类型转换
    毕向东java基础课学习笔记——DOS中多命令来回切换的技巧
    vb 本机与SQL远程服务器时间同步
  • 原文地址:https://www.cnblogs.com/roucheng/p/3456024.html
Copyright © 2011-2022 走看看