我有一个从方法中获取字符串的程序。 我想知道如何在某些位置向该字符串插入字符串值。
例如:
mystring = "column1 in('a','b')column2 in('c','d')column3 in('e','f')";
在这里,如何在mystring
中每次出现字符')后插入字符串值“和”?
PS。如果可能,还包括如何不在最后插入它。
答案 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 ");
编辑:刚认识到我是个白痴。修正了从"\\).+$"
到"\\)(?=.+$)"
的上述模式,以便在匹配中不包含(并因此替换).+$
部分。