Java代码格式字符串到美国邮政编码

时间:2013-11-28 05:51:15

标签: java string-formatting

请您分享一个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

5 个答案:

答案 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 = 5length =9。然后,如果长度为5,则可以获取值。如果长度为9,则在Java中使用substring()并将String 0-55-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(/\-$/, ""));