在一串含有汉字和英文字母及数字的字符串中,如:   原字符串               结果
---------------------------------------
 上海SDFG456              SDFG456
 飞利浦SPM3702BB雅致黑     SPM3702BB注意:字母在字符串中位置是不固定的。
    性能的考虑。

解决方案 »

  1.   

    提示
    正则
    [\u4e00-\u9fa5]
      

  2.   


                string str = "飞利浦SPM3702BB雅致黑";
                Regex re = new Regex(@"[\u4e00-\u9fa5]");
                string strnew = re.Replace(str, "");
      

  3.   


            static void Main(string[] args)
            {
                GetCharAndDigit("上海SDFG456");
                GetCharAndDigit("飞利浦SPM3702BB雅致黑");
            }
            static void GetCharAndDigit(string input)
            {
                foreach (Match match in Regex.Matches(input, @"[a-zA-Z\d]+"))
                    Console.WriteLine(match.Value);
            }
    /*
    输出:
    SDFG456
    SPM3702BB
    */
      

  4.   

    最简单的办法,不考虑性能和算法           string str = "飞利浦SPM3702BB雅致黑    SPM3702BB",str_="";
               for (int i = 0; i < str.Length; i++)
                   str_ += str[i] < (char)255 ? str[i].ToString() : "";
               System.Console.Write(str_);
      

  5.   


    string input = "飞利浦SPM3702BB雅致黑";
    Regex re = new Regex(@"[^\u4e00-\u9fa5]+");  //匹配至少一个非汉字字符
    Match m = re.Match(input);
    string output = m.Value;  // SPM3702BB
    如果是
    string input = "飞利浦SPM3702BB雅致黑上海SDFG456"
    可以这样
    Regex re = new Regex(@"[^\u4e00-\u9fa5]+");  
    MatchCollection mc = re.Matches(input);
    foreach(Match m in mc)
    {
        Console.WriteLine(m.Value);  //依次将结果输出来
    }
      

  6.   

    string input = "飞利浦SPM3702BB雅致黑";
    input.replace("/^([\x00-\x7F]|[\x80-\xFE][\x40-\x7E\x80-\xFE]){30}/","")SPM3702BB