我想替换以下字符串:
'DRCI',1,'P','CALLIN_DATE,DRIV_EMPL_CODE'
使用:
'DRCI', '1', 'P', 'CALLIN_DATE,DRIV_EMPL_CODE'
所以我想用单引号包装任何数字。
最简单的方法是什么?
答案 0 :(得分:1)
您可以使用"(\\d+)"
和"'$1'"
表达式:
var s = Regex.Replace(
"'DRCI',1,'P','CALLIN_DATE,DRIV_EMPL_CODE'"
, "(\\d+)"
, "'$1'");
Console.WriteLine(s);
(\\d+)
匹配非空数字序列,并使其成为捕获组; '$1'
用单引号将该捕获组的内容包装起来。
编辑(受Servy的comment启发)对于更强大的解决方案,请在表达式中使用前瞻和后瞻:
// Make sure that the digits are surrounded by commas
"(?<=(?:^|,)\\s*)(\\d+)(?=\\s*($|,))"
答案 1 :(得分:0)
如果要将所有数字括在带引号的字符串中,您可以尝试这样的事情:
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);
答案 2 :(得分:0)
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'