我有一个字符串需要替换特定的字符串,我的字符串如下

string s = @"-Username ABC **-Password XYZ** -Address MNO";
string[] s1 = s.Split('-');
var newList = s1.Where(s2 =>s2.Contains("Password"));


我需要将字符串-Password XYZ替换为-Password ****可以帮助我吗

最佳答案

测试

    [TestCase("-Username ABC -Password XYZ -Address MNO", "-Username ABC -Password *** -Address MNO")]
    [TestCase("-Username ABC -Password XYZ", "-Username ABC -Password ***")]
    public void Test(string toTest, string expected )
    {
        Assert.AreEqual(expected, DestroyPassword(toTest));
    }




    public static string DestroyPassword(string str )
    {
          var r = new Regex("-Password .*?($| )");//? in .net means not greedy
          return r.Replace(str, "-Password ***$1");
    }


编辑:

注意事项

这不会掩盖密码中带有空格的密码。如果您知道-Address始终是下一个标记,则如下所示会更好:

    public static string DestroyPassword(string str )
    {
        var r = new Regex("-Password .*?($| -Address)");//? in .net means not greedy
        return r.Replace(str, "-Password ***$1");
    }


但是当密码包含“ -Address”时,该事件不能很好地处理

关于c# - 如何使用正则表达式或linq替换C#中的特定字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40603448/

10-17 02:49