当前位置: 代码迷 >> ASP.NET >> 急求CSDN的字符串匹配好手来
  详细解决方案

急求CSDN的字符串匹配好手来

热度:5322   发布时间:2013-02-25 00:00:00.0
急!!求CSDN的字符串匹配高手来啊
小弟新手,有这样的字符串,要转换成标准格式,求助!!多谢!!!
原来的:
例一: WWW123-112EF2211/V1.0字字字字
例二: QWE234A-123AB32/V2.2字字字字字

要匹配成的:
结果一: WWW123(V1.0)-112EF2211/
结果二: QWE234(V2.2)-123AB32/A

有这样的条件
条件1: 首先检测字符串里面必有有 "-" "/V" 这两种字符才开始匹配 
  2: 必须以WWW或QWE开头,然后匹配到 - 前面,前6位,如果-前面有7位则第7位放到最后面/的后面,如结果二。
  3: 开始匹配前面6位后面加上() 括号里面加上 V后面的取值,三位字符,汉字都舍弃。
  4. 继续匹配 - 加上后面的数字字母,一直匹配到 / 为止。  

最后输入标准的格式,求各位高手相救!

------解决方案--------------------------------------------------------
C# code
 string str1 = @"WWW123-112EF2211/V1.0字字字字";            string str2 = @"QWE234A-123AB32/V2.2字字字字字";            //结果一: WWW123(V1.0)-112EF2211/            //结果二: QWE234(V2.2)-123AB32/A            if (str2.Contains("-") && str1.Contains("/V"))            {                if (str2.StartsWith("WWW") || str2.StartsWith("QWE"))                {                    //匹配                    str2 = System.Text.RegularExpressions.Regex.Replace(str2, @"(WWW|QWE)(\d+)([A-Z]*?)-(\d+[A-Z]+\d+)/(V\d+\.\d+)", @"$1$2($5)-$4/$3");                    str2 = System.Text.RegularExpressions.Regex.Replace(str2, @"[\u4e00-\u9fa5]+", "");//去掉中文                    Console.WriteLine(str2);                }                else                {                    Console.WriteLine("源字符串不以WWW和QWE开头");                }            }            else            {                Console.WriteLine("源字符串不包含-和/V");            }/*QWE234(V2.2)-123AB32/A*/
------解决方案--------------------------------------------------------
更完整点
C# code
    string str1 = @"WWW123-112EF2211/V1.0字字字字";            string str2 = @"QWE234A-123AB32/V2.2字字字字字";            List<string> list = new List<string>();            List<string> matchList = new List<string>();            list.Add(str1);            list.Add(str2);            //结果一: WWW123(V1.0)-112EF2211/            //结果二: QWE234(V2.2)-123AB32/A            foreach (string str in list)            {                if (str.Contains("-") && str.Contains("/V"))                {                    if (str.StartsWith("WWW") || str.StartsWith("QWE"))                    {                        string newstr = String.Empty;                        //匹配                        newstr = System.Text.RegularExpressions.Regex.Replace(str, @"(WWW|QWE)(\d+)([A-Z]*?)-(\d+[A-Z]+\d+)/(V\d+\.\d+)", @"$1$2($5)-$4/$3");                        newstr = System.Text.RegularExpressions.Regex.Replace(str, @"[\u4e00-\u9fa5]+", "");//去掉中文                        matchList.Add(newstr);                    }                    else                    {                        Console.WriteLine("源字符串不以WWW和QWE开头");                    }                }                else                {                    Console.WriteLine("源字符串不包含-和/V");                }            }            matchList.ForEach(X => Console.WriteLine(X));            /*              WWW123(V1.0)-112EF2211/               QWE234(V2.2)-123AB32/A             * /
------解决方案--------------------------------------------------------
C# code
string[] arrStr = new string[] { "WWW123-112EF2211/V1.0字字字字", " QWE234A-123AB32/V2.2字字字字字" };        Regex reg = new Regex(@"(?is)(WWW|QWE)(\d{3})([^-]+?)?(-[^/]+?/)(.{4}).+");        foreach (string str in arrStr)        {            Response.Write(reg.Replace(str, "$1$2($5)$4$3") + "<br/>");        }//WWW123(V1.0)-112EF2211///QWE234(V2.2)-123AB32/A
  相关解决方案