[英]String replace in C# but only the exact character set
我有以下字符串:
string x = "23;32;323;34;45";
我想用X替换23,如下所示:
x = "x:32;323;34;45";
但是当我尝试它时,却得到了这个:
x = "x:32;3x;34;45";
有没有办法可以得到预期的输出?
您将需要一个正则表达式(regexp)。 这里的替换规则是
所以你的代码看起来像这样
var result = Regex.Replace(input, @"\b23\b", "X");
一种替代方法是拆分您的字符串,替换匹配的元素并加入新的字符串>
var result = string.Join(";", input.Split(";").Select(v => v == "23" ? "X" : v));
假设您知道密钥,那很容易:
myDict["thekey"] = Regex.Replace(myDict["thekey"], @"\b23\b", "X");
如果要对所有项目进行此替换,我会这样做,但是不确定是否这是最好的解决方案:
[Fact]
public void Replace_value_in_dict()
{
// given
var mydict = new Dictionary<string, string>
{
{ "key1", "donothing" },
{ "key2", "23;32;323;34;45" },
};
// when
var result = mydict
.Select(kv => (kv.Key, Regex.Replace(kv.Value, @"\b23\b", "X")))
.ToDictionary(x => x.Item1, x => x.Item2);
// then
Assert.Equal(result, new Dictionary<string, string>
{
{ "key1", "donothing" },
{ "key2", "X;32;323;34;45" },
});
}
您应该使用正则表达式
var x="23;32;323;34;45";
var res = Regex.Replace(x, @"\b23\b", "x");
Console.WriteLine(res);
工作样本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.