C# 怎样拆分中英文字符串? string str = "this is xiaoming小明";原字符串的空格要保留(有什么就要保留什么,不以改变原字符串的内容). 怎样拆分成string str1= "this is xiaoming"; string str2 = "小明";有什么方法可以做成这样?

解决方案 »

  1.   

    可以判断是空格的 还是字母还是汉字的 像char.IsSymbol ()一样
      

  2.   

    用正则表达试判断.. 循环截取 , 并且创建两个变量.. 是英文字母 就保存到英文字符串,不是英文就保存到汉字里.
     Regex.IsMatch方法
      

  3.   

    using System.Collections;
    using System.Text.RegularExpressions;
            private void button1_Click(object sender, EventArgs e)
            {
                string[] sourceStrings = textBox1.Text.Split('(', ')');
                ArrayList chineseStrings = new ArrayList();
                ArrayList englishStrings = new ArrayList();
                for (int i = 0; i < sourceStrings.Length - 1; i++)
                {
                    //判断是否是英文
                    Regex rIsEnglishString = new Regex("^[A-Za-z]");
                    if (rIsEnglishString.IsMatch(sourceStrings[i]))
                        englishStrings.Add(sourceStrings[i]);                {
                        if (sourceStrings[i].Trim() != "")
                            chineseStrings.Add(sourceStrings[i]);
                    }
                }
                textBox2.Text = "中文名:";
                for (int i = 0; i <= chineseStrings.Count - 1; i++)
                {
                    textBox2.Text += " " + chineseStrings[i].ToString();
                }
                textBox3.Text = "英文名:";
                for (int i = 0; i <= englishStrings.Count - 1; i++)
                {
                    textBox3.Text += " " + englishStrings[i].ToString();
                }
            }
      

  4.   

    5楼写得还有欠妥当的应该用
    if(Regex..IsMatch(sourceStrings[i] ,"^[\u4e00-\u9fa5]" )){
    //取中文字符
    }else{
    if(Regex..IsMatch(sourceStrings[i] ,"^[A-Za-z])){//取英文文字符}}
      

  5.   

    直接 用这个 
    [\u4e00-\u9fa5\s]+|[\w\s]+ 
      

  6.   


    string[] sourceStrings = textBox1.Text.Split('(', ')');能把string str = "this is xiaoming小明";分解到数组中去吗?看不大懂
    直接Char c;
    foreach(c in str)
    {
    [......]
    }这样遍历不也挺好的嘛
      

  7.   

     ArrayList ary = new ArrayList();
                String str=textBox1.Text.Trim();
                String zh_cn = "";
                String en_us = "";            foreach (var c in str)
                {
                    ary.Add(c.ToString());
                }            for (int i = 0; i < ary.Count; i++)
                {
                    if (Regex.IsMatch(ary[i].ToString(), "^[\u4e00-\u9fa5]"))
                    {
                        //取中文字符
                        zh_cn += ary[i].ToString();                }
                    else if (Regex.IsMatch(ary[i].ToString(), "^[A-Za-z]") || ary[i].ToString().Trim() == "")
                    {
                        //取英文文字符
                        en_us += ary[i].ToString();
                    }
                }
                MessageBox.Show(zh_cn + "**" + en_us);
    我的博客 程序员日记 http://www.ideaext.com 欢迎交流
      

  8.   

    用if判断
    之后用substring截取就行了!!
      

  9.   


    if(Regex..IsMatch(sourceStrings[i] ,"^[\u4e00-\u9fa5]" ))
    {
    //取中文字符
    }
    else
    {
    if(Regex..IsMatch(sourceStrings[i] ,"^[A-Za-z]))
    {//取英文文字符}}
      

  10.   

    if(Regex..IsMatch(sourceStrings[i] ,"^[\u4e00-\u9fa5]" )){
    //取中文字符
    }else{
    if(Regex..IsMatch(sourceStrings[i] ,"^[A-Za-z])){//取英文文字符}
    这个牛啊!