extern const BP_UINT8 g_SysMapDis_<DIST_N>[];
我想用'0'或'1'替换'DIST_N',例如:
extern const BP_UINT8 g_SysMapDis_0[];
所以我做这样的事情
Regex REGEX_CODE_BLOCK_DIST_N = new Regex(@"(.+)(<DIST_N>)(.+)");
int n = 0;
string codeBlock = "extern const BP_UINT8 g_SysMapDis_<DIST_N>[];";
string ret += REGEX_CODE_BLOCK_DIST_N.Replace(codeBlock, "$1" + n + "$3");
我只有这个
$10[];// should be "extern const BP_UINT8 g_SysMapDis_0[];"
那么如何在“ $ 1”之后附加数字?
答案 0 :(得分:3)
在这种简单情况下,您可以使用字符串替换而不是正则表达式:
string codeBlock = "extern const BP_UINT8 g_SysMapDis_<DIST_N>[];";
string ret = codeBlock.Replace("<DIST_N>", "0");
具体而言,您的正则表达式替换字符串为"$1" + n
,其值为"$10"
-因此最终找到了第10个 组。解决方案是改用"${1}0"
,将组与后面的"0"
分开。例如:
var s = Regex.Replace("123abc",@"(.)","${1}0");
另请参阅:
答案 1 :(得分:2)
您的正则表达式必须紧随其后,因为这是您要替换的字符串。
"(<DIST_N>)"
完整代码
Regex REGEX_CODE_BLOCK_DIST_N = new Regex(@"(<DIST_N>)");
int n = 0;
string codeBlock = "extern const BP_UINT8 g_SysMapDis_<DIST_N>[];";
string ret = REGEX_CODE_BLOCK_DIST_N.Replace(codeBlock, n.ToString() );
输出
extern const BP_UINT8 g_SysMapDis_0[];
其他评论
请注意,您可以使用更简单的字符串。在这种情况下,请替换为Regex。
string ret = codeBlock.Replace("<DIST_N>", n.ToString());