2012-03-14 3 views
1

У меня есть текст с номером кредитной карты внутри, например: «Номер вашей кредитной карты - 4321432143219999, это действительно ваша кредитная карта!»C# RegEx. Замените кредитную карту в тексте

Мне нужно найти, RegEx этот номер и заменить его ************9999, поэтому привести текст должен быть: «Ваш номер кредитной карты ************9999, это действительно ваша кредитная карта!»

Как я могу это сделать в C#?

Спасибо!

+0

[Что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+1

@jsobo Я считаю, что ОП рассмотрел регулярные выражения, учитывая, что (s) он сказал: «Мне нужно найти RegEx» – Robbie

+0

образец кода того, что было опробовано и не работал, сделало бы это «РЕАЛЬНЫМ» вопросом. Это просьба о том, чтобы мы работали над этим человеком. –

ответ

4
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 *. Цифры должны быть отделены от другого текста пробелом или другими символами, отличными от слова. Таким образом, A123456789 не очень хорошо, как нет 123456789A. 123456789, - это нормально, потому что , является символом, отличным от слова.

+0

Благодарим вас за идеальное решение! – ihorko

2

Лучше избегать регулярных выражений, когда это возможно, потому что они медленнее и труднее устранять неполадки, чем обычные операции подстроки.

public static string HideNumber(string number) 
    { 
     string hiddenString = number.Substring(number.Length - 4).PadLeft(number.Length, '*'); 
     return hiddenString; 
    } 
+0

Хорошие ответы часто включают небольшое объяснение, особенно когда они предлагают другое техническое решение, чем запрошенный запрос. –

+0

ok, так что это мой комментарий. Регулярно дерьмо, не используйте его, когда сможете. – Tommix

Смежные вопросы