如何替换c#中的某些字符b/w字符串?

如何替换c#中的某些字符b/w字符串?,c#,string,C#,String,如何替换c#中的某些字符b/w字符串 假设 字符串是:1-2-5-7-8-9-10-15 我使用替换函数 当我将5替换为2 它还将最后一个15替换为12,因为那里有5 那么如何才能获得正确的输出呢?您需要将-5-替换为-2-试试这个 yourString = yourString.Replace("-5-","-2-"); 有分离器吗 例如,如果你真的有字符串链接1-2-5。。。您可以将“-5”替换为-2。您可以使用regex替换并替换为类似的regex [^\d]*5[^\d]*要匹配旁边没

如何替换c#中的某些字符b/w字符串

假设

字符串是:
1-2-5-7-8-9-10-15

我使用替换函数

当我将
5
替换为
2

它还将最后一个
15
替换为
12
,因为那里有
5


那么如何才能获得正确的输出呢?

您需要将-5-替换为-2-

试试这个

yourString = yourString.Replace("-5-","-2-");

有分离器吗


例如,如果你真的有字符串链接1-2-5。。。您可以将“-5”替换为-2。

您可以使用regex替换并替换为类似的regex

[^\d]*5[^\d]*
要匹配旁边没有任何数字的5,您可以使用以下方法:

yourString.Split("-").Select(s => Regex.Replace(s, "^5$", "2")).Aggregate((a,b) => a + "-" + b);
与这里的大多数其他答案不同,当要替换的字符串位于输入字符串的开头或结尾时,这也会处理这种情况

new Regex(@"\b5\b").Replace("1-2-5-7-8-9-10-15", "2");
\b
与单词边界匹配。这意味着将匹配“-5-”,但“-15-”不会匹配


它还将处理匹配位于字符串边缘且两侧没有连字符的情况,例如“5-”和“-5”。

如果有
-52-
,您将以
-22-
结束,因为它适用于任何集合,而我的解决方案仅适用于示例集合。@Pawel该集合中没有5,因此,没有什么可以取代。如果你想用一个5开头的集合,那么@Stecya和我的解决方案都不起作用。为此,使用来自@丹尼尔的解决方案。@ Saul-SigLa-你应该考虑使用Daniel Hilgarth解决方案,因为它处理所有的情况+ 1,虽然你的方法只适用于示例集,而不是针对具有不同分隔符的集合,我更喜欢在正则表达式上的解决方案,因为你的方法更容易阅读,而且不那么重。我认为通过一些小的调整,您的方法将适合OP的需要,并且不需要昂贵的正则表达式。@Bazzz:我认为这不能以一种符合所有要求的方式进行调整。如果一个简单的解决方案不能正常工作,那么它从一开始就不是一个解决方案。