为了账号安全,请及时绑定邮箱和手机立即绑定

C# 中的字符串替换,但只有确切的字符集

C# 中的字符串替换,但只有确切的字符集

C#
千巷猫影 2022-01-09 10:19:08
我有以下字符串:string x = "23;32;323;34;45";我想用 X 替换 23 ,如下所示:x = "x:32;323;34;45";但是当我尝试它时,我得到了这个:x = "x:32;3x;34;45";有没有办法获得预期的输出?
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您将需要一个正则表达式 (regexp)。这里的替换规则是

  • 词界

  • 23

  • 词界

所以你的代码看起来像这样

 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" },

        });

    }


查看完整回答
反对 回复 2022-01-09
?
守候你守候我

TA贡献1802条经验 获得超10个赞

你应该使用正则表达式


var x="23;32;323;34;45";

var res = Regex.Replace(x,  @"\b23\b", "x");

Console.WriteLine(res);



查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信