我正在 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 關注
- 142 瀏覽
添加回答
舉報
0/150
提交
取消