字符串替换的问题

wxw95_whut 2018-09-17 04:58:34
我又来了,请教大家一个字符串替换的问题啊。题目如下:
现需要将括号里面的参数用数字替换,同时去掉括号。不用考虑括号内部有括号的情况,括号内部为参数名称,可能是一个,也可能是用加号连接起来的多个参数。每个字符串用来的替换的数字是已知的,按顺序替换就好了。具体例子如下
(W1)W(L1)-Z(L2) 替换为 500W2700-Z200; 其中500,2700,200这三个数是已知的,分别将括号里的W1,L1,L2
65CG(L1+L2+L3)L-(D1)/Q(H1) 替换为 65CG330+150+2200L-100/Q30; 其中330,150,2200,100,30这三个数是已知的,分别将括号里的WL1,L2,L3,D1,H1.
上面的W1,L1这些具体是什么不用考虑,它可是任何其他的代号它只是括号内的参数。
谢谢大家了!
...全文
115 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxw95_whut 2018-09-17
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
            Regex regex = new Regex(@"\([\s\S]*?\)");

var inputStr = "65CG(L1+L2+L3)L-(D1)/Q(H1)";
var arr = new int[] { 330, 150, 2200, 100, 30 };
int i = 0;
var result= regex.Replace(inputStr, m =>
{
var tmpArr = m.Value.Split('+').Select(r => 0).ToArray();
Array.Copy(arr, i, tmpArr, 0, tmpArr.Length);
i += tmpArr.Length;
return string.Join("+", tmpArr);
});

Console.WriteLine(result);


非常感谢!已经满足了我的要求 谢谢了
  • 打赏
  • 举报
回复
            Regex regex = new Regex(@"\([\s\S]*?\)");

var inputStr = "65CG(L1+L2+L3)L-(D1)/Q(H1)";
var arr = new int[] { 330, 150, 2200, 100, 30 };
int i = 0;
var result= regex.Replace(inputStr, m =>
{
var tmpArr = m.Value.Split('+').Select(r => 0).ToArray();
Array.Copy(arr, i, tmpArr, 0, tmpArr.Length);
i += tmpArr.Length;
return string.Join("+", tmpArr);
});

Console.WriteLine(result);
  • 打赏
  • 举报
回复
            Regex regex = new Regex(@"\([\s\S]*?\)");

var inputStr = "(W1)W(L1)-Z(L2)";
var arr = new int[] { 1, 2, 3, 4 };
int i = -1;
var result= regex.Replace(inputStr, m =>
{
i++;
if (arr.Length > i)
{
return arr[i].ToString();
}
return m.Value;
});

Console.WriteLine(result);
wxw95_whut 2018-09-17
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
是否可以认为不可能存在括号嵌套的情况,即((K1)W(K2))K3这种情况?
另外你下面那个有问题,应该65CG(L1)+(L2)+(L3)L-(D1)/Q(H1) 才能替换出你后面的结果


谢谢回答,不需要考虑括号嵌套。还有就是我可能没表述清楚。这个括号里面只有一个参数就不需要+号,有多个参数就用+号连接。我下面那个就是需要将括号里面的L1+L2+L3 分别用三个数替换掉,还请您帮我看看
wxw95_whut 2018-09-17
  • 打赏
  • 举报
回复
谢谢回答,不需要考虑括号嵌套。还有就是我可能没表述清楚。这个括号里面只有一个参数就不需要+号,有多个参数就用+号连接。我下面那个就是需要将括号里面的L1+L2+L3 分别用三个数替换掉,还请您帮我看看。
  • 打赏
  • 举报
回复
是否可以认为不可能存在括号嵌套的情况,即((K1)W(K2))K3这种情况?
另外你下面那个有问题,应该65CG(L1)+(L2)+(L3)L-(D1)/Q(H1) 才能替换出你后面的结果

110,538

社区成员

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

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

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