问题描述
||
我有一个字符串“ JohnMarkMarkMark”
我想用两种情况用\“ Tom \”替换\“ Mark \”
在第一种情况下,我只想替换第一次出现的\“ Mark \”结果将是:\“ JohnTomMarkMark \”
在第二种情况下,我想替换所有\“ Mark \”的出现,结果将是:\“ JohnTomTomTom \”
请建议
恶作剧
解决方法
string data = \"JohnMarkMarkMark\";
string resultOne = new Regex(\"Mark\").Replace(data,\"Tom\",1);
string resultAll = data.Replace(\"Mark\",\"Tom\");
, 对于第一种情况,请使用IndexOf,Substring和Concat。
对于第二种情况,请使用“替换”。
, (1)是:
var inString = \"TestMarkMarkMark\";
var lookFor = \"Mark\";
var replaceWith = \"Tom\";
var length = lookFor.Length;
var first = inString.IndexOf(lookFor);
var newString = inString.Substring(0,first) + replaceWith + inString.Substring(first + length);
可以对其进行优化,但是我已经对其进行了扩展,因此很容易遵循。
(2)很简单-只要做inString.Replace(\"Mark\",\"Tom\");
, 对于案例1,尝试这个
string s = \"JohnMarkMarkMark\";
Regex x = new Regex(\"Mark\");
MatchCollection m = x.Matches(s);
if (m!=null && m.Count > 0)
{
s = s.Remove(m[0].Index,m[0].Length);
s = s.Insert(m[0].Index,\"Tom\");
}
对于案例2,请尝试s = s.Replace(\"Mark\",\"Tom\");