Android - 使用掩码格式化字符串

5

我有一个产品编号,希望能够使用掩码格式化。

例如:

String productNumber = "0913014316";
String mask = "XX.XXX.XXX.XXX";

我该如何得到以下输出:09.13.014.316
我可以使用String.format()吗?或者在Android上使用其他方法?
谢谢
2个回答

3
我认为自己写比在这里等待回答更快 :-)
您可以尝试以下伪代码:
```code // 伪代码 function doSomething() { // do something here } ```
祝好运!
StringBuilder out = new StringBuilder();
int j=0;
for (int i = 0; i< mask.lenght ;  i++) {
   if (mask[i] == 'X') {
       out.append(producNumber[j];
       j++;
   }
   else {
       out.append('.');
       i++;
   }
}
return out.toString();

希望有更优化的方法来做这件事情,但无论如何... :) - Janus
你应该在 else 语句中移除 i++。 - Leandro Borges Ferreira

0

对于其他遇到同样问题的人,这里是完整的解决方案:

public String getMaskedText(String rawText, String mask, char variableChar, char constChar) {
    StringBuilder out = new StringBuilder();

    for (int i = 0, j = 0; i < mask.length() && j < rawText.length(); i++) {
        if (mask.charAt(i) == variableChar) {
            out.append(rawText.charAt(j));
            j++;
        } else {
            out.append(constChar);
        }
    }

    return out.toString();
}

你可以像这样使用它:

String result = getMaskedText("123456789", "##-###-###",'#','-');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接