字符串替换问题,求一高效解决办法

benbenkui 2009-03-09 02:41:54

var store="$1:a,b,c,d,e,$2:f,g,h,i,j,k,$";//字符规则:"$[0-9]"+":"+".+" (以"$"结束)
var modle="<tr><td>$11</td><td>$12</td></tr><tr><td>$21</td><td>$22</td></tr><tr>...";

替换规则:
modle.$11=store.$1.a; modle.$12=store.$2.f;
modle.$21=store.$1.b; modle.$22=store.$2.g;
modle.$31=store.$1.c; modle.$12=store.$2.h;
.....
表达能力不行,希望描述清楚了,其实就是一模板替换,c#和JS的代码皆可.
...全文
127 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2009-03-10
  • 打赏
  • 举报
回复
昨天回来得晚,没看到
感觉设计不是很合理
我的做法是先把STORE中的数据,按你的规则取到一个Hashtable中,然后再对modle进行替换

string store = "$1:a,b,c,d,e,$2:f,g,h,i,j,k,$";
Hashtable hs = new Hashtable();
MatchCollection mc = Regex.Matches(store, @"\$([0-9]):(?:([^,$:]+),)+");
foreach (Match m in mc)
{
for (int i = 0; i < m.Groups[2].Captures.Count; i++)
{
hs.Add((i+1) + m.Groups[1].Value, m.Groups[2].Captures[i].Value);
}
}
string modle = " <tr> <td>$11 </td> <td>$12 </td> </tr> <tr> <td>$21 </td> <td>$22 </td> </tr> <tr>...";
string result = Regex.Replace(modle, @"\$([0-9]{2})", delegate(Match m) { if (hs[m.Groups[1].Value] != null) return hs[m.Groups[1].Value].ToString(); return ""; });
richTextBox2.Text = result;
yuloukong 2009-03-09
  • 打赏
  • 举报
回复
命名空间 using System.Text.RegularExpressions;
yuloukong 2009-03-09
  • 打赏
  • 举报
回复
命名空间 using System.Text.RegularExpressions;
yuloukong 2009-03-09
  • 打赏
  • 举报
回复
modle= Regex.Replace(store, "$12", "$32");//把store中的$12替换为$32,是这样么?
benbenkui 2009-03-09
  • 打赏
  • 举报
回复
就是希望得到的字符串是:
modle=" <tr> <td>a</td> <td>f </td> </tr> <tr> <td>b </td> <td>g </td> </tr> <tr>...";
自己把自己绕了,晕迷.

modle.$12=store.$2.h; 改为:modle.$32=store.$2.h;
格拉 2009-03-09
  • 打赏
  • 举报
回复
昏迷中...
benbenkui 2009-03-09
  • 打赏
  • 举报
回复
我的做法就是分次提取modle的数据,然后和STORE中的数据进行循环替换,感觉这种方法不太好,过于死板.
希望高手能提供高效的写法.

var tmpDate="$1:a,b,c,d,e,1,2,3,4,5$2:f,g,h,i,j,k,m,n,q,u$";
var arr=store.toString().match(/<!--#[\d]1-->/g);

var replaceDate=tmpDate.substring(3,22).split(',');
for(var i=0;i<arr.length;i++){
arr[i]=replaceDate[i];
}
zzxap 2009-03-09
  • 打赏
  • 举报
回复
看得很晕
benbenkui 2009-03-09
  • 打赏
  • 举报
回复

var store="$1:a,b,c,d,e,$2:f,g,h,i,j,k,$";//字符规则:"$[0-9]"+":"+".+" (以"$"结束)
var modle="<tr><td>$11</td><td>$12</td></tr><tr><td>$21</td><td>$22</td></tr><tr>...";

替换规则:
modle.$11=store.$1.a; modle.$12=store.$2.f;
modle.$21=store.$1.b; modle.$22=store.$2.g;
modle.$31=store.$1.c; modle.$12=store.$2.h;
.....
表达能力不行,希望描述清楚了,其实就是一模板替换,c#和JS的代码皆可.
晕迷,颜色显示不出来

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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