求一个正则表达式(C#) 你可以用正则找到 {}间的内容,然后根据逗号split为数组,如果数组只有一个元素,就按第一条处理,有多个就按第二条处理 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先用正则打到{$List_参数1,参数2,参数3}间的内容,分解参数如下: private void button1_Click(object sender, EventArgs e) { string msg = "{$List_参数1,参数2,参数3}"; string p = "(?:_|,)([^,}]*)"; MatchCollection matches = Regex.Matches(msg, p); foreach (Match m in matches) { string g = m.Groups[1].Value; if (g == "参数1") { msg = msg.Replace(g, "Parameter1"); } if (g == "参数2") { msg = msg.Replace(g, "Parameter2"); } if (g == "参数3") { msg = msg.Replace(g, "Parameter3"); } } string result = msg; } +1 直接取出来先按 split('_')分,然后把后面的按split(',')分不就得了 string str = "{$Label_Tel} {$List_参数1,参数2,参数3}"; string pattern_1 = @"(?i)\{\$Label_([^}]*?)\}"; string pattern_2 = @"(?i)\{\$List_((?<Paras>[^,]+),?)+\}"; str = Regex.Replace(str, pattern_1,a=> { //得到对应字段 string column = a.Groups[1].Value;//Tel //根据字段查找,如果返回10010 string return_str = "10010"; return return_str; }); str = Regex.Replace(str, pattern_2, a => { var para_list = a.Groups["Paras"].Captures.Cast<Capture>().Select(b => b.Value).ToList(); /* [0] "参数1" string [1] "参数2" string [2] "参数3" string */ //根据参数查找,如果返回10010 string return_str = "10010"; return return_str; }); 如何获取winfrom中combox的相应的值(不用索引) 怎么模拟多个并发的客户端用C# 不怎么写标题,关于一个treeView 二次添加xml数据问题 下载WEB目录外的文件解决方法 winform的datagrid中能加入日期控件吗? 求助String与string有什么区别 关于上午的一个C#问题的总结!你肯定学到东西!(涉及两个关于DataGridView控件的关键点!)重要关键) 怎样重载winForm的最小化事件处理方法? Socket的发数据和收数据的机制是什么? 继承的问题 看大系統代碼,遇到的困難 怎样去掉WebBrowser控件弹出的脚本提示?
先用正则打到{$List_参数1,参数2,参数3}间的内容,分解参数如下:
private void button1_Click(object sender, EventArgs e)
{
string msg = "{$List_参数1,参数2,参数3}";
string p = "(?:_|,)([^,}]*)";
MatchCollection matches = Regex.Matches(msg, p); foreach (Match m in matches)
{
string g = m.Groups[1].Value;
if (g == "参数1")
{
msg = msg.Replace(g, "Parameter1");
}
if (g == "参数2")
{
msg = msg.Replace(g, "Parameter2");
}
if (g == "参数3")
{
msg = msg.Replace(g, "Parameter3");
}
}
string result = msg;
}
string pattern_1 = @"(?i)\{\$Label_([^}]*?)\}";
string pattern_2 = @"(?i)\{\$List_((?<Paras>[^,]+),?)+\}";
str = Regex.Replace(str, pattern_1,a=>
{
//得到对应字段
string column = a.Groups[1].Value;//Tel
//根据字段查找,如果返回10010
string return_str = "10010";
return return_str;
});
str = Regex.Replace(str, pattern_2, a =>
{
var para_list = a.Groups["Paras"].Captures.Cast<Capture>().Select(b => b.Value).ToList();
/* [0] "参数1" string
[1] "参数2" string
[2] "参数3" string
*/ //根据参数查找,如果返回10010
string return_str = "10010";
return return_str; });