我有一个字符串,有2个相似的单词..我想代替2秒的第二个单词,但不是第一个..任何帮助?取代第二场比赛跳过第一场比赛在C#
1
A
回答
1
您可以使用正则表达式和逆序。
var replaceHello = "ABC hello 123 hello 456 hello 789";
var fixedUp = Regex.Replace(replaceHello, "(?<=hello.*)hello", "goodbye");
这将用“再见”替换“再见”这个词的所有例子,除了第一个例外。
+0
+1的解决方案。它是有益的。谢谢 – 2011-04-27 04:19:15
0
Regex
版本简洁,但如果您不是那种使用正则表达式的人,则可以考虑更多的代码。
StringBuilder
类提供了一种在给定子字符串内进行替换的方法。在string
的扩展方法中,我们将指定一个从第一个适用匹配结束时开始的子字符串。针对论据的一些基本验证已到位,但我不能说我已经测试过所有组合。
public static string SkipReplace(this string input, string oldValue, string newValue)
{
if (input == null)
throw new ArgumentNullException("input");
if (string.IsNullOrEmpty(oldValue))
throw new ArgumentException("oldValue");
if (newValue == null)
throw new ArgumentNullException("newValue");
int index = input.IndexOf(oldValue);
if (index > -1)
{
int startingPoint = index + oldValue.Length;
int count = input.Length - startingPoint;
StringBuilder builder = new StringBuilder(input);
builder.Replace(oldValue, newValue, startingPoint, count);
return builder.ToString();
}
return input;
}
使用它:
string foobar = "foofoo".SkipReplace("foo", "bar");
相关问题
- 1. 赛后第一场比赛
- 2. 如何第一场比赛
- 3. GROK第三场比赛
- 4. REGEXP_SUBSTR获得第二场比赛
- 5. 为什么比赛从不使用第二场比赛?
- 6. 的Preg比赛没有在第一场比赛
- 7. 左加入第一场比赛在HQL
- 8. 第3场比赛 - 源代码
- 9. 更换每一场比赛,但第一
- 10. SED:第一场比赛后追加
- 11. 命令到第一场比赛
- 12. 不包括第一场比赛,BeautifulSoup
- 13. 比赛第一场,然后加入行
- 14. 选择的第一场比赛加入
- 15. preg_replace只作用于第一场比赛
- 16. 赢得第3场比赛的条件
- 17. 更新表,但通过第一场比赛,然后通过第二
- 18. 赛后的多场比赛
- 19. 正则表达式的帮助 - 提取的第二场比赛
- 20. 搜索字符串并抓取第二场比赛
- 21. 其中第二场比赛的一些标准只打印线
- 22. SED替代(错误地)停在第一场比赛
- 23. grep的过滤器不会停止在第一场比赛
- 24. 为每场比赛
- 25. Python最后一场比赛
- 26. 的Javascript代替,忽略了第一场比赛
- 27. 我需要匹配一个正斜杠的URL,但跳过第一场比赛
- 28. 正则表达式与第二场比赛的JavaScript
- 29. 忽略第二场比赛中的HTML如果不匹配
- 30. Qt正则表达式从第一场比赛开始到最后一场比赛结束
着”你/没有帮助的例子更多细节 – BrokenGlass 2011-04-27 03:54:36