我想在.NET应用程序中就地编辑字符串.我知道这StringBuilder
允许我进行就地附加,插入和替换,但它不允许这样做的简单方法:
while (script.IndexOf("@Unique", StringComparison.InvariantCultureIgnoreCase) != -1) { int Location = script.IndexOf("@Unique", StringComparison.InvariantCultureIgnoreCase); script = script.Remove(Location, 7); script = script.Insert(Location, Guid.NewGuid().ToString()); }
由于没有IndexOf
在StringBuilder
.有没有人有一个有效的方法来进行文本信息的就地编辑?
编辑#1:更改样本以使每个'替换'需要具有不同的结果.
如果您的代码确实如此简单,那么为什么不使用其中一种内置Replace
方法string
,StringBuilder
或者Regex
?或者?
编辑后评论......
您可以使用带参数的重载之一Regex.Replace
MatchEvaluator
替换每个出现的单独值:
string foo = "blah blah @Unique blah @Unique blah blah @Unique blah"; // replace each occurrence of "@Unique" with a separate guid string bar = Regex.Replace(foo, "@Unique", new MatchEvaluator(m => Guid.NewGuid().ToString()), RegexOptions.IgnoreCase));