You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Regex.Replace()按变量指定字符数添加空格的正确语法是什么?

解决C#中Regex.Replace使用变量控制每隔n个字符加空格的问题

你遇到的问题很典型——正则表达式字符串是字面量,C#不会自动把字符串里的num识别成你定义的int变量,正则引擎会把{num}当成无效的量词语法(量词需要数字,不是标识符),所以才会报错。

这里有两种简单的方法解决这个问题:

方法1:字符串拼接

把变量的值直接拼接到正则模式字符串中,让正则引擎能拿到实际的数字:

int num = 8; 
string text = "abcdefghijklmnop"; 
string result2 = Regex.Replace(text, ".{" + num + "}", "$0 ");
// 输出结果:"abcdefgh ijklmnop "

方法2:字符串插值(C# 6及以上版本推荐)

用字符串插值语法更简洁,不过要注意转义大括号——因为字符串插值里的{}是用来包裹变量的,要在正则里保留字面量的{},需要写两个大括号{{}}:

int num = 8; 
string text = "abcdefghijklmnop"; 
string result2 = Regex.Replace(text, $".{{{num}}}", "$0 ");
// 输出结果和上面一致

补充说明

  • 如果num的值可能为0或者负数,建议先做合法性判断,避免生成无效的正则表达式(比如.{0}会匹配空字符串,导致结果里全是空格)。
  • 如果你不想在字符串末尾多一个空格,可以调整正则为匹配除了末尾的n个字符,比如用(?!$)排除末尾:$".{{{num}}}(?!$)",这样就不会在最后一段后面加空格了。

内容的提问来源于stack exchange,提问作者Emmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:24:34