请您分享一个java代码段,将5位或9位数转换为美国邮政编码格式
e.g.
Input -> Expected output
12345 -> 12345
123456789 -> 12345-6789
下面的代码有效,但对于5位数,它以 - 结尾。如何使用正则表达式删除它?
public static void main(String[] args) throws ParseException {
String[] values = new String[]{"1234","12345","123456897"};
MaskFormatter f = new MaskFormatter("#####-####");
f.setValueContainsLiteralCharacters(false);
for(String value:values){
System.out.println(f.valueToString(value));
//System.out.println(String.format("%5s-%04s", value,value));
}
}
输出是:
234 -
12345-
12345-6897
答案 0 :(得分:2)
尝试,
String[] values = new String[]{"1234","12345","123456897"};
MaskFormatter f = new MaskFormatter("#####-####");
f.setValueContainsLiteralCharacters(false);
for(String value:values){
String output=f.valueToString(value).trim();
if(output.endsWith("-")){
output=output.substring(0,output.length()-1);
}
System.out.println(output);
//System.out.println(String.format("%5s-%04s", value,value));
}
<强>输出:强>
1234
12345
12345-6897
答案 1 :(得分:0)
public static String convertZip(String unconverted) {
if (unconverted.length() > 5) {
return unconverted.substring(0, 5) + "-" + unconverted.substring(5);
}
else {
return unconverted;
}
}
答案 2 :(得分:0)
您可以将您的号码(任意位数)转换为字符串,然后验证长度并仅考虑length = 5
和length =9
。然后,如果长度为5,则可以获取值。如果长度为9,则在Java中使用substring()
并将String
0-5
和5-9
除以 - 然后添加 - 在两个部分之间。现在是你的邮政编码。
答案 3 :(得分:0)
只需创建两个格式化程序,然后根据值的长度使用适当的格式化程序即可。
public static void main(String... args) throws ParseException {
String[] values = new String[] { "1234", "12345", "123456897" };
MaskFormatter f5 = new MaskFormatter("#####");
f5.setValueContainsLiteralCharacters(false);
MaskFormatter f9 = new MaskFormatter("#####-####");
f9.setValueContainsLiteralCharacters(false);
for (String value : values) {
System.out.println(value.length() > 5 ? f9.valueToString(value) : f5.valueToString(value));
}
}
我个人认为我会朝另一个方向前进:
public static void main(String... args) throws ParseException {
String[] values = new String[] { "1234", "12345", "123456897" };
for (String value : values) {
System.out.println(value.length() > 5 ? new StringBuilder(value).insert(5, "-").toString() : value);
}
}
答案 4 :(得分:-2)
试试这个,
var reformat = "123456789".replace(/(\d{5})/g, function(match){
return match + "-";
});
console.log(reformat.replace(/\-$/, ""));