美国运通信用卡卡号格式
Credit card number format for American express
在我的 android 应用程序中,我有这种格式 xxxx xxxx xxxx xxxx
对于信用卡号,但是当我插入 15 位数字的美国运通卡时,我希望它显示为 xxxx xxxx xxxx 1234
相反,我得到 xxxx xxxx xxx1 234
。
我该如何解决这个问题?
我正在使用此代码:
textCardNumber.setText("Card Number: " + mActivity.maskedAccountNumber.replaceAll("(.{4})(?!$)", " "));
您使用的是一个简单的替换函数,它要求数字的长度是 4 的倍数。当然,您可以改进您的格式化算法。但最简单的解决方案是确保输入字符串的长度。
在您的特定情况下,您可以在输入中留下一个 x
for AMEX
String maskedAccountNumber = mActivity.maskedAccountNumber;
if (maskedAccountNumber.length() == 15)
maskedAccountNumber = "x" + maskedAccountNumber;
textCardNumber.setText("Card Number: " + maskedAccountNumber.replaceAll("(.{4})(?!$)", " "));
最简单的方法就是使用 -
String acc = mActivity.maskedAccountNumber;
textCardNumber.setText("Card Number: xxxx xxxx xxxx " + acc.substring(acc.length() - 4));
在我的 android 应用程序中,我有这种格式 xxxx xxxx xxxx xxxx
对于信用卡号,但是当我插入 15 位数字的美国运通卡时,我希望它显示为 xxxx xxxx xxxx 1234
相反,我得到 xxxx xxxx xxx1 234
。
我该如何解决这个问题?
我正在使用此代码:
textCardNumber.setText("Card Number: " + mActivity.maskedAccountNumber.replaceAll("(.{4})(?!$)", " "));
您使用的是一个简单的替换函数,它要求数字的长度是 4 的倍数。当然,您可以改进您的格式化算法。但最简单的解决方案是确保输入字符串的长度。
在您的特定情况下,您可以在输入中留下一个 x
for AMEX
String maskedAccountNumber = mActivity.maskedAccountNumber;
if (maskedAccountNumber.length() == 15)
maskedAccountNumber = "x" + maskedAccountNumber;
textCardNumber.setText("Card Number: " + maskedAccountNumber.replaceAll("(.{4})(?!$)", " "));
最简单的方法就是使用 -
String acc = mActivity.maskedAccountNumber;
textCardNumber.setText("Card Number: xxxx xxxx xxxx " + acc.substring(acc.length() - 4));