c# 替换所有中文、标点符号,全角转半角

     private void btnStart_Click(object sender, EventArgs e)
        {
            var srcWords = ToDBC(txtSrc.Text.Trim());
            var placeStr = Regex.Replace(srcWords, @"([\p{P}*])", " ");
            placeStr = Regex.Replace(placeStr,@"([\u4e00-\u9fa5])", "");
            var splitWords = placeStr.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            var words = splitWords.ToList().Select(item =>
            {
                if (item.Length > 0)
                {
                    var first = item.Substring(0, 1).ToUpper();
                    var last = "";
                    if (item.Length > 2)
                    {
                        last = item.Substring(1, item.Length-1);
                    }
                    return first + last;
                }
                return "";
            });
            var joinWords = string.Join(" ", words);
            Clipboard.SetText(joinWords);

            txtDes.Text = AppendWords(joinWords);
            MessageBox.Show("已将替换后的字符串复制到粘贴板");
        }

        /// <summary>
        /// 替换所有的中文及标点符号
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        string RemoveAllChineseAndSymbol(string str)
        {
            var placeStr = Regex.Replace(str, @"([\p{P}*])", " ");
            placeStr = Regex.Replace(placeStr, @"([\u4e00-\u9fa5])", "");
            return placeStr;
        }
        /// <summary>
        /// 追加及替换内容
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        string AppendWords(string str)
        {
            var append = Regex.Replace(ToDBC(txtAppend.Text.Trim()), @"[\p{P}*]", " ");
            if (string.IsNullOrEmpty(append))
            {
                return str;
            }
            var i=combSelect.SelectedIndex;

            if (i==0)
            {
                return str.Trim() + " " + append;
            }else if (i==1)
            {
                return append + " " + str.Trim();
            }else if (i==2)
            {
                var replaceTo=Regex.Replace(ToDBC(txtToReplace.Text.Trim()), @"[\p{P}*]", " ");
                return str.Trim().Replace(append, replaceTo);
            }
            else
            {
                return str;
            }
        }
        /// <summary>
        /// 全角转半角
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public 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);
            }
            return new String(c);
        }

        private void combSelect_SelectedIndexChanged(object sender, EventArgs e)
        {
            var cb=(ComboBox) sender;
            txtToReplace.Visible = cb.SelectedIndex==2;
        }
时间: 2024-10-13 20:56:52

c# 替换所有中文、标点符号,全角转半角的相关文章

word中利用宏替换标点标点全角与半角

Alt+F11,然后插入-模块: 复制下面代码到编辑窗口: Sub 半角标点符号转换为全角标点符号() '中英互译文档中将中文段落中的英文标点符号替换为中文标点符号 Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant Dim MyRange As Range, N As Byte '定义一个中文标点的数组对象 ChineseInterpunction = Array(".

js将英文标点替换成中文标点符号

js将英文标点替换成中文标点符号,打打字时尤其在做程序,输入法的标点往往不小心就打成英文的了(半角的了),用下边的程序就可以替换过来. function repSign(s) { s = s.replace(/([\u4E00-\u9FA5]|^|\n|\r)([\,\.\?\!])(?=[\u4E00-\u9FA5]|$|\n|\r)/g,function(u,v,w,x) { sign = { ',': ',', '.': '.', '?': '?', '!': '!' }; return

js对全角与半角的验证,相互转化以及介绍

1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.在全角中,字母和数字等与汉字一样占据着等宽的位置. 半角:是指一个字符占用一个标准的字符位置.半角占一个字节. 半角就是 ASCII 方式的字符,在没有汉字输入法起作用的时候,输入的字母.数字和字符都是半角的. 每个半角字符只占用一字节的空间(一字节有8位,共256个编码空间).汉语.日

C#全角和半角转换

在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角".在汉字输入时,系统提供"半角"和"全角"两种不同的输入状态,但是对于英文字母.符号和数字这些通用字符就不同于汉字,在半角状态它们被作为英文字符处理:而在全角状态,它们又可作为中文字符处理.半角和全角切换方法:单击输入法工具条上的 按钮或按键盘上的Shift+Space键来切换. (1)全角--指一个

JS如何判断文字是全角还是半角(转载)

转载自:http://www.php.cn/js-tutorial-362638.html 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节.半角:是指一个字符占用一个标准的字符位置.半角占一个字节.接下来通过本文给大家介绍JS验证全角与半角及相互转化的知识,需要的朋友参考下吧 1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-8

详解全角和半角的转换

最近在项目中遇到一个问题,客户上传的文件无法下载下来,经过定位发现原来客户上传的文件名中包含很多全角字符导致无法解析,找不到对应的文件,其实文件是真实存在的,只是用的上传下载组件不支持全角字符的文件名,从而导致文件找到不到,无法下载. 所以本人就对全角和半角进行了一些分析和总结以及它们之间用java代码是如何进行转换的经验同各位园友进行分享,希望大家共同学习,共同进步,不足之处,请大家不吝指出. 好了,进入正题......... 全角和半角简介 全角是一种电脑字符,且每个全角字符占用两个标准字符

全角与半角的转化

1.全角与半角的区别 汉字的特点使我们碰到了两个基本且又非常重要的概念,即全角与半角.形象的说,在使用英文输入法时,电脑屏幕上,一个英文字符(如a)所占的位置,人们称其为半角,而一个汉字所占的位置则等于两个英文字符,故称其为全角. 英文输入法下,无论是输入字母.符号还是数字,始终都只占一个英文字符的位置,即半角.但在中文输入法下,则会有全角半角两种选择,对中文字符来说,这两种选择对其没有影响,它始终都要占两个英文字符的位置,但对此状态下输入的符号.数字以及英文字母来说,就显得很重要,如以下所示:

刨根究底字符编码之五——简体汉字编码方案(GB2312、GBK、GB18030、GB13000)以及全角、半角、CJK

简体汉字编码方案(GB2312.GBK.GB18030.GB13000)以及全角.半角.CJK 一.概述 1. 英文字母再加一些其他标点字符之类的也不会超过256个,用一个字节来表示一个字符就足够了(2^8 = 256).但其他一些文字不止这么多字符,比如中文中的汉字就多达10多万个,一个字节只能表示256个字符,肯定是不够的,因此只能使用多个字节来表示一个字符. 于是当计算机被引入到中国后,相关部门设计了GB系列编码("GB"为"国标"的汉语拼音首字母缩写,即&q

MySQL 全角转换为半角

?序言:       用户注册时候,录入了全角手机号码,所以导致短信系统根据手机字段发送短信失败,现在问题来了,如何把全角手机号码变成半角手机号码? 1,手机号码全角转换成半角先查询出来全角半角都存在的手机号码的数据SELECT a.username ,COUNT(1) AS numFROM(SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(uu.user_name,'0'