C#把字符串里除汉字、英文字母、数字、空格之外的字符都换成空格。最好用正则表达式。

请附代码用函数的形式回答,我给出2个测试用例。
C#把字(符串里除汉字)换成 C 把字 符串里除汉字
:18轮,氙灯,导航,14向座椅,BOSE, 换成 18轮 氙灯 导航 14向座椅 BOSE

private void button2_Click(object sender, EventArgs e)
        {
           MessageBox.Show(
                Replace(
                    new Regex(@"([^\u4e00-\u9fa5a-zA-z0-9\s].*?)"), 
                    ":18轮,氙灯,导航,14向座椅,BOSE, 换成  18轮 氙灯 导航 14向座椅 BOSE"));
        }

        /// <summary>
        /// The replace.
        /// </summary>
        /// <param name="regex">
        /// The regex.
        /// </param>
        /// <param name="input">
        /// The input.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        public static string Replace(Regex regex, string input)
        {
            string inputReplaced = null;

                inputReplaced = regex.Replace(input, " ");

            return inputReplaced;
        }

这是用正则做的,效果请看图片



追问

我想问你弹出界面里面为什么“换成”两边是一样的?没按照我的测试用例来。

追答

需要把源码的字串改下 才会出第二个结果,

源码里只是写了一个的字串的

追问

右斜杠怎么办呢?

追答

如果想不替换右 斜杠 请把代码中的正则修改成

([^\u4e00-\u9fa5a-zA-z0-9\s/].*?)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-15
把字符串里的每个元素(字符)for一下,然后用Encoding.Default处理成字节码,长度为1的是Ascii,用<和>确定范围,是字母数字空格可以不管,其它可以换成空格(详请参照Ascii表),长度为、2的是汉字,不用管。

public static string Proc(string str)
{
for(int i=0;i<str.Length;i++)
. {
. byte[] bts=Enco
ding.Default.GetBytes(str[i]);
.
. if(bts.Length==1){
. if(!((bts[0]>=48&&bts[0]<=57)||(bts[0]>=65&&bts[0]<=90)||(bts[0]>=97&&bts[0]<=122)))
. {
. str[i]=' ';
. }
. }

. }
. return str;
}
第2个回答  2013-08-15

没看明白你说的是什么意思,给你个参考吧:

private string Replace(string input)
{
           string result= Regex.Replace(input, @"[u4e00-u9fa5]", "C", RegexOptions.Compiled | RegexOptions.IgnoreCase);
           result = Regex.Replace(result, @"[,]", " ", RegexOptions.Compiled | RegexOptions.IgnoreCase);
           return result;
}

追问

哪里没看明白?

第3个回答  2013-08-15
[\S]*

试试这个看
第4个回答  2013-08-15
不会用正则,只会逐字节判断,嘿嘿追问

那也可以,不过你能穷尽特殊符号?

追答

奇怪的问题,为什么座椅、轮椅不能被识别

追问

你的观察能力是否有问题?

追答

追问

能不能发附件给我测试一下?

追答

程序还有小问题,你先试试吧

追问

能不能换成txt扩展名?我没法下载。

追答追问

这个更没法看,txt扩展名懂了么?我的网络的百度下载被屏蔽了。

追答追问

还是谢谢你了。

相似回答