我有这样的要求。我的代码生成随机字符串,它可以是字母,数字和字母数字。
让我们说其中一个数字字符串是“7882347812”。我想根据像3chars.3chars.4chars这样的模式将其格式化为788.234.7812
如果它是一个像“h34jh8we7k”那样的字母数字字母。然后根据像2chars / 4chars / 4chars这样的模式将其格式化为h3 / 4jh8 / we7k。
如果它是像“jkythjyv”那样的alpha版本。然后根据像3chars $ 3chars $ 2chars这样的模式将其格式化为jky $ thj $ yv。
通常,生成的字符串可以包含字符[a-zA-Z0-9]。这应格式化为我上面提到的任何特殊字符。输入应该是字符串&格式化程序和输出应该是格式化的字符串。即使是自定义格式化程序也没关系。
我知道如何为此编写代码。在Java中有没有标准的方法呢?
答案 0 :(得分:4)
你可以通过replaceAll函数来做到这一点。
System.out.println("7882347812".replaceAll("^(\\d{3})(\\d{3})(\\d{4})$", "$1.$2.$3"));
输出:
788.234.7812
或强>
System.out.println("foo bar 7882347812".replaceAll("\\b(\\d{3})(\\d{3})(\\d{4})\\b", "$1.$2.$3"));
输出:
foo bar 788.234.7812
答案 1 :(得分:1)
我得到了一个解决方案:
MaskFormatter formatter = new MaskFormatter("A-AAAA-AAAA-A");
formatter.setValueContainsLiteralCharacters(false);
System.out.println(formatter.valueToString("1222233334"));
输出为1-2222-3333-4
查看http://docs.oracle.com/javase/7/docs/api/javax/swing/text/MaskFormatter.html了解详情
答案 2 :(得分:0)
答案 3 :(得分:0)
回答你的问题:
没有"标准"在Java中将字符串解析为3chars.3chars.4chars模式。
正如你所说,你已经知道如何解决这个问题,所以我猜你不需要每个人的答案?