如何使Textview只显示最后4位数字

时间:2017-08-30 15:20:43

标签: java android xml

我的Textview是从SQLite获取数据,但我想让Textview显示如下:
************ 1234,而不是1234123412341234。

enter image description here

6 个答案:

答案 0 :(得分:5)

    String number = "grou353fp23g3qprwog9512";
    String mask = number.replaceAll("\\w(?=\\w{4})", "*");

    textView.setText(mask);

输出是******************* 9512

答案 1 :(得分:1)

public static String padLeading*(String data, int requiredLength){
        StringBuffer sb = new StringBuffer();

        if(data .length() > 4){
data .substring(data .length() - 4)
}

        int numLeading* = requiredLength - data.length();
        for (int i=0; i < numLeading*; i++){
            sb.append("*");
        }
        sb.append(data);
        return sb.toString();
    }

此方法的优点是您可以根据需要更改*的数量。或者为了简单起见,可以确定字符串的最后四个字符,将其传入并执行:

if(data .length() > 4){
    data .substring(data .length() - 4)
    }

这个方法。

答案 2 :(得分:0)

String string = "1234567890";
if(string .length() > 4){
string .substring(string .length() - 4)
}
tv.setText(string);

输出:7890

答案 3 :(得分:0)

您可以在开头硬编码"*"并从sqlite中提取信用卡号的最后4位数字并显示在文本视图中。

String lastFourDigits = extractLastFourDigits(); //I assume you get this
myTextView.setText("**** **** **** "+lastFourDigits);

答案 4 :(得分:0)

您想使用TransformationMethod 您可以使用PasswordTransformationMethod的来源作为指导,这样您就不会丢失原始字符串。

答案 5 :(得分:0)

您在这里。干净且可重复使用:

/**
 * Applies the specified mask to the card number.
 *
 * @param cardNumber The card number in plain format
 * @param mask The number mask pattern. Use # to include a digit from the
 * card number at that position, use x to skip the digit at that position
 *
 * @return The masked card number
 */
public static String maskCardNumber(String cardNumber, String mask) {

    // format the number
    int index = 0;
    StringBuilder maskedNumber = new StringBuilder();
    for (int i = 0; i < mask.length(); i++) {
        char c = mask.charAt(i);
        if (c == '#') {
            maskedNumber.append(cardNumber.charAt(index));
            index++;
        } else if (c == 'x') {
            maskedNumber.append(c);
            index++;
        } else {
            maskedNumber.append(c);
        }
    }

    // return the masked number
    return maskedNumber.toString();
}

通话示例:

System.out.println(maskCardNumber("1234123412341234", "xxxx-xxxx-xxxx-####"));
> xxxx-xxxx-xxxx-1234

System.out.println(maskCardNumber("1234123412341234", "##xx-xxxx-xxxx-xx##"));
> 12xx-xxxx-xxxx-xx34