如何在C#中将字符串中的某个数字相乘

我正在 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)))

如何以一种好的方式分割字符串以定位索引之前的数字?


泛舟湖上清波郎朗
浏览 97回答 1
1回答

撒科打诨

您可以使用正则表达式来执行此操作。例如: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委托将其相乘并替换为原始字符串。
打开App,查看更多内容
随时随地看视频慕课网APP