Regex с оценщиком совпадений выполнит работу
string filterCC(string source) {
var x=new Regex(@"^\d+(?=\d{4}$)");
return x.Replace(source,match => new String('*',match.Value.Length));
}
Это будет соответствовать любому количеству цифр, за которыми следуют 4 цифры и конец (это не будет включать 4 цифры в замене).Функция замены заменит совпадение строкой * равной длины.
Это дает дополнительное преимущество, заключающееся в том, что вы также можете использовать его как algorthim для проверки.Измените первый + на {11,12}, чтобы он соответствовал в общей сложности 15 или 16 символам, а затем вы можете использовать x.IsMatch
для определения действительности.
РЕДАКТИРОВАТЬ
В качестве альтернативы, если вы всегдахотите получить 16 символов, просто используйте
return x.Replace(source,new String('*',12));