如何在c#中替换一些字符黑白字符串?如何在c#中替换一些字符黑白字符串?
假设
字符串是:1-2-5-7-8-9-10-15
我使用替换功能
当我与2
更换5
也替换最后15
到12
因为5
那里。
所以我怎么才能得到正确的输出?
如何在c#中替换一些字符黑白字符串?如何在c#中替换一些字符黑白字符串?
假设
字符串是:1-2-5-7-8-9-10-15
我使用替换功能
当我与2
更换5
也替换最后15
到12
因为5
那里。
所以我怎么才能得到正确的输出?
您可以使用此:
yourString.Split("-").Select(s => Regex.Replace(s, "^5$", "2")).Aggregate((a,b) => a + "-" + b);
相反对于大多数其他答案,这也处理了这种情况,即当要替换的字符串位于输入字符串的开始或结尾时。
您将需要更换-5-与-2-
+1虽然你的方法只适用于示例集,而不适用于具有不同分隔符的集合,但我更喜欢你的解决方案,而不是使用正则表达式,因为你的方法更容易阅读,而且不太重。我认为,通过一些小调整,您的方法将适合OP的需求,并且不需要昂贵的正则表达式。 – Bazzz 2011-03-31 14:04:05
@Bazzz:我不认为这可以通过符合所有要求的方式进行调整。一个不能正常工作的简单解决方案首先不是解决方案。 – 2011-03-31 14:06:19
试试这个
yourString = yourString.Replace("-5-","-2-");
它不会在这样的情况下工作:5-2-3-5 – 2011-03-31 13:59:39
@Pawel那个集合中没有5个,所以没有东西可以替代。如果你想要一组领先的5,那么@Stecya和我的解决方案都不会起作用。为此,请使用@Daniel的解决方案。 – cadrell0 2011-03-31 14:02:59
@pawel ......亚,但在我的程序中,这种情况不存在 – 2011-03-31 14:06:02
,你可以使用正则表达式替换和替换正则表达式像
[^\d]*5[^\d]*
匹配5没有任何号码旁边
new Regex(@"\b5\b").Replace("1-2-5-7-8-9-10-15", "2");
\b
匹配单词边界。这意味着'-5'将会匹配,但'-15'不会。
它也将处理匹配在字符串的边缘并且在两侧都没有连字符的情况,例如, '5'和'-5'。
结束我喜欢这个,因为它适用于任何集合,因为我的解决方案只适用于示例集合。 – cadrell0 2011-03-31 14:01:46