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

发布于 2024-10-16 08:10:44 字数 257 浏览 4 评论 0原文

我有一个产品编号,我想使用掩码对其进行格式化。

示例:

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

如何获得以下输出:09.13.014.316

我可以使用String.format()吗?或者也许 Android 上有其他东西?

谢谢

I have a product number which I would like to format using a mask.

Example:

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

How do I get this following output: 09.13.014.316?

Can I use String.format()? Or maybe something else on the Android?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

奶茶白久 2024-10-23 08:10:44

我认为自己写这个而不是在这里等待答案会更快:-)

你可以做类似的事情(伪代码):

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();

I think writing this yourself instead of waiting for an answer here would be faster :-)

You could do something like (pseudocode):

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();
秋日私语 2024-10-23 08:10:44

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

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", "##-###-###",'#','-');

for others who have the same problem, here is full solution:

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();
}

So you can use it like this:

String result = getMaskedText("123456789", "##-###-###",'#','-');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文