-5

我想替换以下字符串:

'DRCI',1,'P','CALLIN_DATE,DRIV_EMPL_CODE'

和:

'DRCI','1','P','CALLIN_DATE,DRIV_EMPL_CODE'

所以我想用单引号包裹任何数字。

最简单的方法是什么?

4

3 回答 3

1

您可以为此使用"(\\d+)""'$1'"表达式:

var s = Regex.Replace(
    "'DRCI',1,'P','CALLIN_DATE,DRIV_EMPL_CODE'"
,   "(\\d+)"
,   "'$1'");
Console.WriteLine(s);

(\\d+)匹配一个非空的数字序列,并使其成为捕获组'$1'将该捕获组的内容用单引号括起来。

ideone 上的演示。

编辑:(Servy评论启发)要获得更强大的解决方案,请在表达式中使用前瞻和后视:

// Make sure that the digits are surrounded by commas
"(?<=(?:^|,)\\s*)(\\d+)(?=\\s*($|,))"

ideone 上的替代演示。

于 2013-08-12T15:39:22.160 回答
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);
于 2013-08-12T15:46:59.850 回答
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'
于 2013-08-12T15:52:24.787 回答