c# - 仅在每次新索引更改的前两行更改字符串
问题描述
我有一个很长的字符串列表,我正在尝试操作。我想将字段“描述”重命名为Type和Process,但仅限于每个新数字(1、2、3)的前两行。
例如:
1 description Payment
1 description Order
1 ID 0222ed48-ddc1-3e19-4770-616c14935ca1
2 description Refund
2 description Partial
2 description Contacted?
2 ID 87f11531-0493-4f5a-86d2-c8be0c23678f
3 description Refund
3 description Partial
3 ID 87f11531-0493-4f5a-86d2-c8be0c23678f
为此:仅在每个数字更改(1,2,3)的前两行使用类型和进程:
1 **Type** Payment
1 **Process** Order
1 ID 0222ed48-ddc1-3e19-4770-616c14935ca1
2 **Type** Refund
2 **Process** Partial
2 description Contacted?
2 ID 87f11531-0493-4f5a-86d2-c8be0c23678f
3 **Type** Refund
3 **Process** Partial
3 ID 87f11531-0493-4f5a-86d2-c8be0c23678f
我是否应该尝试在大于 2 时重置的每个循环中添加一个计数器,从而将前两行换掉?
解决方案
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
string foo = @"1 description Payment
1 description Order
1 ID 0222ed48-ddc1-3e19-4770-616c14935ca1
2 description Refund
2 description Partial
2 description Contacted?
2 ID 87f11531-0493-4f5a-86d2-c8be0c23678f
3 description Refund
3 description Partial
3 ID 87f11531-0493-4f5a-86d2-c8be0c23678f";
int number = 0;
int line = 0;
string bar = Regex.Replace(foo, @"^(\d+)(\s+)(\w+)", match =>
{
int currentNumber = Convert.ToInt32(match.Groups[1].Value);
if (currentNumber == number)
line++;
else
{
number = currentNumber;
line = 1;
}
string newToken = line switch
{
1 => "Type",
2 => "Process",
_ => match.Groups[3].Value
};
return match.Groups[1].Value + match.Groups[2].Value + newToken;
}, RegexOptions.Multiline);
}
}
}
[编辑] 交换机可能需要 .NET 5
推荐阅读
- r - R元编程:使用函数调用粘贴逻辑表达式
- javascript - 使用 navigate('/path') 后重新渲染组件
- spring-boot - 如何在嵌套的非事务调用中实现事务行为?
- winmm - 如何在 winmm 的 qb64 中正确声明此函数?
- swift - 我的 Swift Lambda for AWS 工作正常,直到我添加 URLSession
- amazon-web-services - API Gateway w/mTLS and Authorizer - 不一致的 $context.identity.sourceIp
- ionic-framework - 打开应用内浏览器登录,获取cookie,在应用内使用cookie
- javascript - javascript对象修改为对象添加键
- java - 为什么 ProjectionFactory 将 null 转换为空 Optionals?
- c++ - QVector查找效率如何提高?