如何在某些位置的字符串中插入值c#

时间:2009-03-12 19:08:34

标签: c# string

我有一个从方法中获取字符串的程序。 我想知道如何在某些位置向该字符串插入字符串值。

例如:

mystring = "column1 in('a','b')column2 in('c','d')column3 in('e','f')";

在这里,如何在mystring中每次出现字符')后插入字符串值“和”?

PS。如果可能,还包括如何不在最后插入它。

5 个答案:

答案 0 :(得分:5)

可能是最简单的:

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

答案 1 :(得分:2)

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

这可能是你如何实现你想要的:

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子句的一部分)?

答案 2 :(得分:2)

您可以通过替换来实现这一目标。

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')"

答案 3 :(得分:2)

如果你的意思是,我正在按字面意思收集你的字符串:

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')"

这假设你不想要尾随“和”。

答案 4 :(得分:0)

System.Text.RegularExpressions.Regex.Replace(
    mystring, "\\)(?=.+$)", ") and ");

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

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

// And later:
insertAndPattern.Replace(mystring, ") and ");
编辑:刚认识到我是个白痴。修正了从"\\).+$""\\)(?=.+$)"的上述模式,以便在匹配中不包含(并因此替换).+$部分。