C# 如何在字符串中的特定位置c插入值#

C# 如何在字符串中的特定位置c插入值#,c#,string,C#,String,我有一个程序,可以从一个方法中获取字符串。 我想知道如何在特定位置向该字符串插入字符串值 例如: mystring = "column1 in('a','b')column2 in('c','d')column3 in('e','f')"; 在这里,我如何在mystring中插入字符串值“和”在每次出现字符“')”之后 注:如果可能,还包括如何不将其插入末尾。字符串是不可变的,因此不能“仅”更改该字符串的值。 要对字符串进行的每次修改都会导致一个新的字符串实例 这也许是你实现你想要的东西的方法

我有一个程序,可以从一个方法中获取字符串。 我想知道如何在特定位置向该字符串插入字符串值

例如:

mystring = "column1 in('a','b')column2 in('c','d')column3 in('e','f')";
在这里,我如何在
mystring
中插入字符串值“和”在每次出现字符“')”之后


注:如果可能,还包括如何不将其插入末尾。

字符串是不可变的,因此不能“仅”更改该字符串的值。 要对字符串进行的每次修改都会导致一个新的字符串实例

这也许是你实现你想要的东西的方法:

string s = " x in (a, b) y in (c, d) z in (e , f)";

string[] parts = s.Split (')');

StringBuilder result = new StringBuilder ();

foreach( string part in parts )
{
   result.Append (part + ") and ");
}
Console.WriteLine (result.ToString ());
但也许有更好的解决方案

无论如何,您怎么会以这种方式接收该字符串(看起来像sql语句where子句的一部分?

可能是最简单的:

mystring = mystring.Replace(")", ") and ");
mystring = mystring.Substring(0, mystring.Length - " and ".Length);

您可以通过替换来完成此操作

string mystring = "column1 in('a','b')column2 in('c','d')column3 in('e','f')";
mystring = mystring.Replace(")", ") and ").TrimEnd(" and".ToCharArray());
导致:

"column1 in('a','b') and column2 in('c','d') and column3 in('e','f')"

如果你的意思是,我从字面上理解你的字符串:

mystring = "column1 in('a','b')column2 in('c','d')column3 in('e','f')"
然后你可以做:

mystring = mystring.Replace(")c", ") and c");
这将导致:

mystring = 
    "column1 in('a','b') and column2 in('c','d') and column3 in('e','f')"
这是假定您不需要尾随的“and”

正则表达式的
+$
部分确保右括号不在行的末尾。如果您打算经常这样做,我建议为模式创建并持久化
Regex
对象

// Do this once somewhere:
System.Text.RegularExpressions.Regex insertAndPattern =
    new System.Text.RegularExpressions.Regex("\\)(?=.+$)");

// And later:
insertAndPattern.Replace(mystring, ") and ");

编辑:刚意识到我是个白痴。修复了上面从
“\\).+$”
“\\)(?=.+$)“
的模式,因此
+$
部分不包括在匹配中(因此被替换)。

你的意思是:mystring=“column1 in('a','b')column2 in('c','d')column3 in('e','f')?请告诉你知道sql注入。拜托,我知道sql注入。在这里,我从列表框中获取数据,所以实际上没有sql注入的机会…对吗?也许。。。如果是ASP.Net,则不能信任列表框。如果是winforms,您可以信任这些框,但您需要知道是否可以信任这些框的源。如果是任何web服务,您不能信任列表框,因为无法保证您收到的HTTP GET/POST确实是使用这些列表框创建的。我没有想到这一点。。。8) 7注意这个TrimEnd(),我将在末尾修剪任何“”、“a”、“n”或“d”,而不仅仅是“and”。是的,我应该提到它适用于问题中的情况,但是,如果字符串的结尾包含trimend中不打算删除的任何字符,则可能会产生意外的副作用。因此,因为您不知道什么是正则表达式,所以您只想注销他的注释?哇!
// Do this once somewhere:
System.Text.RegularExpressions.Regex insertAndPattern =
    new System.Text.RegularExpressions.Regex("\\)(?=.+$)");

// And later:
insertAndPattern.Replace(mystring, ") and ");