var str = "Your credit card number is 4321432143219999, this is really your credit card!";
var res = Regex.Replace(str, "[0-9](?=[0-9]{4})", "*");
При этом будут искать цифры, за которыми следуют как минимум 4 цифры, и заменять их на *
(так что это будет одурачено 123456
и изменит его на **3456
)
Если номера вашей кредитной карты имеют длину 16 цифр:
var res2 = Regex.Replace(str, @"\b[0-9]{12}(?=[0-9]{4}\b)", new string('*', 12));
Это заменит блок из 12 цифр, за которым следуют 4 цифры (всего 16 цифр), на 12x *
.Цифры должны быть отделены от другого текста пробелом или другими несловесными символами.Так что A1234567890123456
не хорошо, как не 1234567890123456A
.1234567890123456,
в порядке, потому что ,
не является символом слова.