2016-07-27 2 views
-3

Dans mon application Android, j'ai ce format xxxx xxxx xxxx xxxx pour le numéro de carte de crédit, mais quand j'insérer AMEX avec 15 chiffres, je veux qu'il soit présenté comme xxxx xxxx xxxx 1234 Au lieu de cela, je me xxxx xxxx xxx1 234. Comment résoudre ce problème?format de numéro de carte de crédit American Express

J'utilise ce code:

textCardNumber.setText("Card Number: " + mActivity.maskedAccountNumber.replaceAll("(.{4})(?!$)", "$1 ")); 
+0

Vous devez ajouter le code que vous utilisez pour afficher le numéro. – tynn

+0

Je viens de le faire, merci – Katherina

Répondre

0

Vous utilisez simple remplacement fonction qui attend un nombre de longueur un multiple de 4. Vous pouvez simplement améliorer votre mise en forme algorithme bien sûr. Mais la solution la plus simple serait d'assurer la longueur de la chaîne d'entrée.

Dans votre cas, vous pouvez simplement pad à l'entrée avec un x pour AMEX

String maskedAccountNumber = mActivity.maskedAccountNumber; 
if (maskedAccountNumber.length() == 15) 
    maskedAccountNumber = "x" + maskedAccountNumber; 
textCardNumber.setText("Card Number: " + maskedAccountNumber.replaceAll("(.{4})(?!$)", "$1 ")); 
+0

Cela m'a aidé, merci! – Katherina

0

La façon la plus simple serait de simplement utiliser -

String acc = mActivity.maskedAccountNumber; 
textCardNumber.setText("Card Number: xxxx xxxx xxxx " + acc.substring(acc.length() - 4)); 
0

et si j'utilise maskedAccountNumber = "XXXXXXXXXXX" + MainActivity.getInstance(). MCardNumber; mais je veux obtenir

xxxx xxxx xxx1 234 au lieu de xxxx xxxx xxxx 1234?