我有一组字符串,其中包含一个或多个问号,问号由逗号分隔,逗号加一个或多个空格,或者两者都有。所以这些字符串都是可能的:
BOB AND ?
BOB AND ?,?,?,?,?
BOB AND ?, ?, ? ,?
BOB AND ?,? , ?,?
?, ? ,? AND BOB
我需要将问号替换为@P#,这样上面的例子就会变成:
BOB AND @P1
BOB AND @P1,@P2,@P3,@P4,@P5
BOB AND @P1,@P2,@P3,@P4
BOB AND @P1,@P2,@P3,@P4
@P1,@P2,@P3 AND BOB
在没有正则表达式或 Linq 的情况下执行此操作的最佳方法是什么?
请您参考如下方法:
我忽略了输出示例中的空格修剪,因为如果要在 SQL 语句中使用它,空格是无关紧要的。由于使用了 StringBuilder 而不是重复调用 Replace、Substring 或其他字符串方法,这应该执行得很好。:
public static string GetParameterizedString(string s)
{
var sb = new StringBuilder();
var sArray = s.Split('?');
for (var i = 0; i < sArray.Length - 1; i++)
{
sb.Append(sArray[i]);
sb.Append("@P");
sb.Append(i + 1);
}
sb.Append(sArray[sArray.Length - 1]);
return sb.ToString();
}
