var panmaskednumber = "543034******0243"; Console.WriteLine(panmaskednumber.Count(x => x == '*'));
var pattern = "\\*";
var replace = "123456789";
Regex reg = new Regex(pattern);
var newnumber = reg.Replace(panmaskednumber, replace,panmaskednumber.Count(x => x == '*'));
Console.WriteLine(newnumber);我试图在var panmaskednumber中替换*(来自DB的对称密钥)。
不喜欢使用包含方法,在这种方法中,我将*6/7的数目与多个If-elseif一起指定。因为它们可以在6,7-9之间变化。
使用我的上述方法,它将-> *的每个字符替换为var替换。任何Linq方法,如果有高度赞赏。结果: 5430341234567890243
发布于 2017-04-12 12:54:45
您需要使用匹配1个或多个星号符号的\*+模式:
var panmaskednumber = "543034******0243";
var replace = "123456789";
var res = Regex.Replace(panmaskednumber, @"\*+", replace);
// res => 5430341234567890243如果要替换的星号数取决于replace长度,则可以将匹配值传递给匹配评估器,并在那里执行必要的操作:
var panmaskednumber = "543034*****0243";
var replace = "123";
var res = Regex.Replace(panmaskednumber, @"\*+", m =>
m.Value.Length <= replace.Length ?
replace.Substring(0, m.Value.Length) :
$"{replace}{m.Value.Substring(replace.Length)}"
);
Console.Write(res);
// "543034***0243" / "123456789" -> 543034 123 0243
// "543034*****0243" / "123" -> 543034 123** 0243请参阅另一个C#演示
发布于 2017-04-12 12:59:28
您可以使用Regex,但您可以实现没有。让我们寻求一个更简单的解决方案。在网上试试。
var panmaskednumber = "543034******0243";
var count = panmaskednumber.Count(x => x == '*');
var start = panmaskednumber.IndexOf('*');
var replace = "123456789";
// output 5430341234567890243 (543034 123456789 0243)
Console.WriteLine(panmaskednumber.Remove(start) // get head
+ replace // add replace
+ panmaskednumber.Substring(start + count)); // add tail
// output 5430341234560243 (543034 123456 0243) // get head
Console.WriteLine(panmaskednumber.Remove(start)
+ replace.Remove(count) // add replace with count respect
+ panmaskednumber.Substring(start + count)); // add tail
replace = "123";
// output 543034123***0243 (543034 123*** 0243) // get head
Console.WriteLine(panmaskednumber.Remove(start)
+ replace // add replace
+ new string('*', count - replace.Length) // fill with missing *
+ panmaskednumber.Substring(start + count)); // add tail“我想,如果你唯一的工具是锤子,那就把每件事当作钉子对待是很诱人的。”
https://en.wikipedia.org/wiki/Law_of_the_instrument
不要使用Regex,如果你没有。对于这个问题,C#.NET就足够了。:)
https://stackoverflow.com/questions/43370036
复制相似问题