我有一个字符串,我需要替换一个特定的字符串,我的字符串如下
string s = @"-Username ABC **-Password XYZ** -Address MNO";
string[] s1 = s.Split('-');
var newList = s1.Where(s2 =>s2.Contains("Password"));
我需要将字符串-Password XYZ
替换为-Password ****
,有人可以帮助我
答案 0 :(得分:2)
测试
[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'
时,该事件不能很好地处理答案 1 :(得分:1)
您可以使用Regex.Replace(输入,替换)。函数将替换正则表达式找到的所有值。
string input = @"-Username ABC **-Password XYZ** -Address MNO";
string pattern = "(-Password )(\S+)";
string replacement = "$1****";
Regex regex = new Regex(pattern);
string result = regex.Replace(input, replacement);