2016-07-27 5 views
-3

In meiner android app, ich habe dieses Format xxxx xxxx xxxx xxxx für Kreditkartennummer, aber wenn ich AMEX mit 15 Stellen einfügen möchte ich es stattdessen gezeigt, wie xxxx xxxx xxxx 1234 wird, ich xxxx xxxx xxx1 234 bekommen. Wie behebe ich das?Kreditkartennummer Format für American Express

Ich verwende diesen Code:

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

Sie sollten den Code hinzufügen, den Sie verwenden, um die Nummer anzuzeigen. – tynn

+0

Ich tat gerade jetzt, danke – Katherina

Antwort

0

Sie verwenden eine einfache Funktion ersetzen, die Zahlen der Länge könnte Sie ein Vielfaches von 4 erwartet nur Ihre Formatierung Algorithmus natürlich verbessern. Die einfachste Lösung wäre jedoch, die Länge der Eingabezeichenfolge sicherzustellen.

In Ihrem speziellen Fall, dass Sie die Eingabe gerade verlassen konnte Pad mit einem x für AMEX

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

Das half, danke! – Katherina

0

Der einfachste Weg wäre, zu verwenden nur -

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

und was ist, wenn ich maskedAccountNumber = "XXXXXXXXXXX" + MainActivity.getInstance(). MCardNumber; aber ich möchte

xxxx xxxx xxx1 234 statt xxxx xxxx xxxx 1234 bekommen?