如何在C#中替换字符串中的子字符串

12

我想要在一个字符串中替换子字符串134和1254。

((startTime==134)&&(endTime==1254))

假设有一些动态值 - 比如,分别为154和1234。 我已经编写了使用String.Split方法的代码,但似乎代码很长。 如何使其更短更健壮?

这是代码:

string s = "((startTime==134)&&(endTime==1254))";
string[] time = s.Split(')').Reverse().ToArray();
var start = time.FirstOrDefault(s => s.Contains("startTime")).Split('=')[2];
var end = time.FirstOrDefault(e => e.Contains("endTime")).Split('=')[2];
start ="154";
end = "1234"
time[3] = "((startTime=="+start;
time[2] = "&&(endTime=="+end;
string joinedstring;
joinedstring= String.Join(")", time.Reverse());

3
Fahim的回答基本上是对所提问题的完美解决方案。你可能需要澄清你实际的任务是什么,因为使用String.Format(例如((startTime=={0})&&(endTime=={1})))或适当解析异常可能是更好的方法来解决你的实际问题(如果更完整的要求会使问题发生太大变化,则考虑提出一个新问题)。 - Alexei Levenkov
2个回答

23

按照这里的示例,使用“replace”方法替换字符串中的字符。

string output = input.Replace("old_value", "new_value");

0
这是你可以在不使用正则表达式的情况下做到的最短的方式。
    string str = "((startTime==134)&&(endTime==1254))";
    string[] timeArr = str.Replace("(","").Replace(")","").Split(new string[] { "&&" }, StringSplitOptions.None);
    string[] startArr = timeArr[0].Split(new string[] { "=="}, StringSplitOptions.None);
    string[] endArr = timeArr[1].Split(new string[] { "=="}, StringSplitOptions.None);
    startArr[1] = "154";
    endArr[1] = "1234";
    string newStr = "(("+string.Join("==",startArr)+string.Join("==",endArr)+"))";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接