replace:用单引号将任意数字括起来
本文关键字:数字 起来 任意 单引号 replace | 更新日期: 2023-09-27 18:27:17
我想替换以下字符串:
'DRCI',1,'p','call_DATE,DRIV_emp_CODE'
带有:
'DRCI','1','p','call_DATE,DRIV_EMPL_CODE'
所以我想用单引号括住任何数字。
最简单的方法是什么?
您可以使用"(''d+)"
和"'$1'"
表达式:
var s = Regex.Replace(
"'DRCI',1,'P','CALLIN_DATE,DRIV_EMPL_CODE'"
, "(''d+)"
, "'$1'");
Console.WriteLine(s);
(''d+)
匹配一个非空的数字序列,并使其成为捕获组;'$1'
将该捕获组的内容用单引号括起来。
在ideone上演示。
编辑:(灵感来自Servy的评论)要获得更健壮的解决方案,请在表达式中使用lookahead和lookbacking:
// Make sure that the digits are surrounded by commas
"(?<=(?:^|,)''s*)(''d+)(?=''s*($|,))"
ideone上的替代演示。
如果你想用引号将所有数字括在字符串中,你可以尝试这样的方法:
string x = "'DRCI',1,'P','CALLIN_DATE,DRIV_EMPL_CODE'";
string[] y = x.Split(",".ToCharArray());
for (int i = 0; i < y.Length; i++) {
if (Information.IsNumeric(y[i]))
y[i] = "'" + y[i] + "'";
}
x = string.Join(",", y);
var input = "8,'DRCI',1,'P','CALLIN_DATE,55,DRIV_EMPL_2013CODE'";
var output = Regex.Replace(input, @"(^|,)('d+)($|,)", "$1'$2'$3");
输出:
'8','DRCI','1','P','CALLIN_DATE,'55',DRIV_EMPL_2013CODE'