我正在 winform 中制作一个小工具,使我的工作更轻松一些。我的目标是制作一个可以更改每个索引之前的数字的工具。这是一组具有不同索引的项目:1695、1696 等...我想将每个索引之前的数字乘以 2:输入:(group (index 2589) (item (6 1695 0) (12 1696 0) (18 1697 0) (24 1698 0)))输出:(group (index 2589) (item (12 1695 0) (24 1696 0) (36 1697 0) (48 1698 0)))如何以一种好的方式分割字符串以定位索引之前的数字?
1 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
您可以使用正则表达式来执行此操作。例如:
Regex regex = new Regex(@"(?<=\()(\d+)(?= \d+ \d+\))");
var input = "(group (index 2589) (item (6 1695 0) (12 1696 0) (18 1697 0) (24 1698 0)))";
// (group (index 2589) (item (12 1695 0) (24 1696 0) (36 1697 0) (48 1698 0)))
var output = regex.Replace(input, (match) => (int.Parse(match.Value) * 2).ToString());
这里的正则表达式模式具有三个组件,用于隔离要相乘的数字。
(?<=\()是积极的向后看,寻找开括号。
(\d+)匹配括号中的第一个数字 - 一个或多个数字
(?= \d+ \d+\))是正向前查找,它搜索一个空格、一个或多个数字,后跟另一个空格、另一个数字和右括号。
正则表达式的匹配结果只是索引号,因此我们可以使用MatchEvaluator委托将其相乘并替换为原始字符串。
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消