Masquer les 12 premiers caractères de la chaîne avec *?
Comment puis-je prendre de la valeur 123456789012345
ou 1234567890123456
et de le transformer en:
************2345
et ************3456
La différence entre les cordes au-dessus, c'est que l'un se compose de 15 chiffres et l'autre contient 16.
J'ai essayé le suivant, mais il ne garde pas les 4 derniers chiffres du numéro à 15 chiffres et maintenant importe ce que la longueur de la chaîne, 13, 14, 15 ou 16, je veux masque tous les premiers chiffres avec un *, mais garder les 4 derniers. Voici ce que j'ai essayé:
String.Format("{0}{1}", "************", str.Substring(11, str.Length - 12))
source d'informationauteur Xaisoft
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme ceci:
Cela va masquer tous, mais les quatre derniers caractères de la chaîne. Il suppose que la chaîne source est d'au moins 4 caractères.
Façon la plus simple: Créer une extension de la méthode pour extraire les quatre derniers chiffres. Utilisez-la dans votre Chaîne.Format d'appel.
Par exemple:
Dans votre code:
À mon avis, ce qui conduit à un code plus lisible, et il est réutilisable.
EDIT: peut-être pas le moyen le plus facile, mais une alternative qui peut produire plus facile à maintenir les résultats. <haussement d'épaules/>
LINQ:
Essayez ceci:
Ajuster la tête de la fonction en tant que nécessaire, appeler avec:
Essayez ce qui suit:
Regex avec un match évaluateur va faire le travail
Cela correspond à un nombre quelconque de chiffres suivi de 4 chiffres et la fin (il ne comprend pas les 4 chiffres de la remplacer). La fonction remplacer remplacera le match avec une chaîne de * de longueur égale.
Cela a l'avantage supplémentaire que vous pouvez l'utiliser comme une validation algorthim trop. Modifier le premier + {11,12} pour faire correspondre à un total de 15 ou 16 caractères et puis vous pouvez utiliser
x.IsMatch
pour déterminer la validité.MODIFIER
Sinon, si vous voulez toujours un 16 char résultat qui vient d'utilisation
Un moyen simple
Essayez ceci: