Skip to main content
 首页 » 编程设计

c#之帮助字符串操作函数

2024年02月24日24yxwkf

我有一组字符串,其中包含一个或多个问号,问号由逗号分隔,逗号加一个或多个空格,或者两者都有。所以这些字符串都是可能的:

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 而不是重复调用 ReplaceSubstring 或其他字符串方法,这应该执行得很好。:

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(); 
}