急!!求CSDN的字符串匹配高手来啊

Alex_Kael 2012-10-18 10:53:56
小弟新手,有这样的字符串,要转换成标准格式,求助!!多谢!!!
原来的:
例一: 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. 继续匹配 - 加上后面的数字字母,一直匹配到 / 为止。

最后输入标准的格式,求各位高手相救!
...全文
220 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
足球中国 2012-10-18
  • 打赏
  • 举报
回复
4楼升的真快啊。绝对正则高手。。。
csdn_风中雪狼 2012-10-18
  • 打赏
  • 举报
回复
支持4楼
EnForGrass 2012-10-18
  • 打赏
  • 举报
回复
更完整点

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
* /
EnForGrass 2012-10-18
  • 打赏
  • 举报
回复

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
*/

Alex_Kael 2012-10-18
  • 打赏
  • 举报
回复
高手来啊
xuguv 2012-10-18
  • 打赏
  • 举报
回复
可以用正则表达式吗?等高手。
诺维斯基 2012-10-18
  • 打赏
  • 举报
回复
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

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧