J'ai été chargé de parcourir une grande liste de valeurs de chaîne et de supprimer tout signe de carte de crédit. Donc, si, dans la chaîne, je trouve quelque chose qui correspond à (où n = numérique):Recherche de motifs dans String et suppression
nnnn nnnn nnnn nnnn (4 x 4 numerical)
nnnnnnnnnnnnnnnn (16 numerical)
nnnn-nnnn-nnnn-nnnn (Hyphened)
nnnn nnnnnn nnnn (American express?)
nnnnnnnnnnnnnn (AX, no spaces)
nnnn-nnnnnn-nnnn (AX, Hyphened)
Je dois remplacer cette partie de la chaîne avec [CARD NUMBER REMOVED]
Ainsi,
"Client called and gave credit card details as 1234123412341234, exp 1201, and will be booked next week"
deviendrait:
"Client called and gave credit card details as `[CARD NUMBER REMOVED]`, exp 1201, and will be booked next week"
Je pense regEx trouverais cela, mais j'ai aucune expérience regex, et il y a beaucoup de modèles. Et, comment puis-je remplacer cette partie?
Je pourrais écrire quelque chose qui se répète à travers chaque char et qui fait des vérifications de règles, mais cela semble hacky.
Des idées?
Je suis en train ceci:
const string pattern = @"^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$";
const string replacement = "[CARD DETAILS REMOVED]";
var rgx = new Regex(pattern);
string cleansedText = rgx.Replace(UncleansedText, replacement);
return cleansedText;
Mais il ne semble pas trouver une correspondance dans ce:
"1234610008918730 ^^ 9-11 ^^ Code de 064 ^"
Regex n'est pas statique, donc j'essayé, avec la version que j'ai. Voir la question originale - mais je dois faire quelque chose de mal? – Craig
@Craig la classe 'Regex' a une méthode statique [Replace] (http://msdn.microsoft.com/en-us/library/e7f5w83z.aspx). J'ai essayé ça en VS, ça marche. –