我有一个字符串需要替换特定的字符串,我的字符串如下
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/