求一个圆角转半角正则表达式

小菜鸟L 2013-10-10 02:34:20

切换输入法默认的是圆角的 怎样把textbox里的值转换成半角的 ,是不是这个textbox匹配一个正则表达式就行了,如果有的话 ,求正则表达式
...全文
302 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-10-10
  • 打赏
  • 举报
回复
引用 5 楼 u012160333 的回复:
find.Zip报错!- -
.NET 4.0才支持Zip,你稍微修改下 find.Select((x, i) => new { x, i }).Join(replacewith.Select((y, j) => new { y, j }), x => x.i, x => x.j, (x, y) => new { x.x, y.y })
小菜鸟L 2013-10-10
  • 打赏
  • 举报
回复
最后问一下怎样把特殊符号\和"放进string数组里面
小菜鸟L 2013-10-10
  • 打赏
  • 举报
回复
谢谢六楼了,问题解决了。是TextChanged事件,然后控制光标位置
小菜鸟L 2013-10-10
  • 打赏
  • 举报
回复
解决不了怎么破?是代码的问题还是事件的问题,到底放到那个事件里Textchangd还是load还是说其他事件?
rtdb 2013-10-10
  • 打赏
  • 举报
回复
引用 7 楼 u012160333 的回复:
是写在那个事件下,写load事件没用啊
Load事件肯定不对,试一下Leave事件
WM_JAWIN 2013-10-10
  • 打赏
  • 举报
回复
        /// <summary> 转半角的函数(DBC case) </summary>
        /// <param name="input">任意字符串</param>
        /// <returns>半角字符串</returns>
        ///<remarks>
        ///全角空格为12288,半角空格为32
        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
        ///</remarks>
        public static string ToDBC(string input)
        {
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 12288)
                {
                    c[i] = (char)32;
                    continue;
                }
                if (c[i] > 65280 && c[i] < 65375)
                    c[i] = (char)(c[i] - 65248);
                else if (c[i] >= (char)'⒈' && c[i] < (char)'⒑')
                    c[i] = (char)(c[i] - '⒈' + '1');
                else if (c[i] >= (char)'⑴' && c[i] < (char)'⑽')
                    c[i] = (char)(c[i] - '⑴' + '1');
                else if (c[i] >= (char)'㈠' && c[i] < (char)'㈩')
                    c[i] = (char)(c[i] - '㈠' + '1');
                else if (c[i] >= (char)'①' && c[i] < (char)'⑩')
                    c[i] = (char)(c[i] - '①' + '1');

            }
            return new string(c);
        }
哥把公司内部御用代码给你粘出来,分啊
小菜鸟L 2013-10-10
  • 打赏
  • 举报
回复
是写在那个事件下,写load事件没用啊
rtdb 2013-10-10
  • 打赏
  • 举报
回复
帮你变成简单写法:

string[] find = { "1", "2", "3", "4", ... };
string[] replacewith = { "1", "2", "3", "4", ... };
 for (int i=0; i<find.Length; i++)
 {
     textBox1.Text = textBox1.Text.Replace(find[i], replacewith[i]);
 } 
小菜鸟L 2013-10-10
  • 打赏
  • 举报
回复
find.Zip报错!- -
小菜鸟L 2013-10-10
  • 打赏
  • 举报
回复
客户的要求。必须转啊
小菜鸟L 2013-10-10
  • 打赏
  • 举报
回复
再问一下,是写在Load事件下还是其他事件下
rtdb 2013-10-10
  • 打赏
  • 举报
回复
为什么转啊?用户输入的东西不可以随便转的 真要转换的话,用String.Replace()就可以了,不需要正则表达式的
threenewbee 2013-10-10
  • 打赏
  • 举报
回复
string[] find = { "1", "2", "3", "4", ... }; string[] replacewith = { "1", "2", "3", "4", ... }; foreach (var item in find.Zip(replacewith, (x, y) => new { x, y })) { textBox1.Text = textBox1.Text.Replace(item.x, item.y); }

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧