2013-11-28 83 views
2

可否請你分享一個Java代碼段5或9位數字,轉換成美國郵政編碼格式Java代碼格式String美國郵政編碼

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
public static String convertZip(String unconverted) { 
    if (unconverted.length() > 5) { 
     return unconverted.substring(0, 5) + "-" + unconverted.substring(5); 
    } 
    else { 
     return unconverted; 
    } 
} 
0

您可以將號碼(任意數量的數字)轉換爲字符串,然後驗證長度,只考慮length = 5length =9。然後,如果長度爲5,則可以按照原樣獲取值。如果長度爲9,則使用Java中的substring(),並將您的String0-55-9分開,然後在兩部分之間添加。現在它是你的郵政編碼。

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 
-2

試試這個,

var reformat = "123456789".replace(/(\d{5})/g, function(match){ 
     return match + "-"; 
}); 
console.log(reformat.replace(/\-$/, "")); 
+0

樓主是要求對Java,JavaScript不。 –