除非破折号后面有数字,否则需要使用RegEx代码删除邮政编码末尾的短划线

时间:2014-02-04 16:59:52

标签: java regex

我有5位数字的邮政编码,我的邮政编码是9位数字,中间有一个短划线。

问题是5位邮政编码最后有一个短划线,我想只在邮政编码不是9位数字码的情况下删除短划线。

补充说明:所以我有以下格式的邮政编码:##### - 和##### - ####。我想将其更改为#####和##### - ####

6 个答案:

答案 0 :(得分:4)

if(zipCode.endsWith("-")) {  
    // remove '-' 

}

答案 1 :(得分:1)

if (postcode.length() == 6)
        postcode = postcode.substring(0,5);

答案 2 :(得分:1)

您可以使用此正则表达式:

(?<=^[0-9]{5})(-)(?=$)

工作正则表达式示例:

http://regex101.com/r/oO1hG2

java代码:

str = str.replaceAll("(?<=^[0-9]{5})(-)(?=$)", "");

答案 3 :(得分:0)

Pattern p1 = Pattern.compile("(\\d{5})-?");
Pattern p2 = Pattern.compile("(\\d{4})-?(\\d{5})");

Matcher matcher = p1.matcher(zipCode);
String parsed;
if (matcher.find()) {
   parsed = matcher.group(1);
} else {
   matcher = p2.matcher(zipCode);
   if (matcher.find()) {
      parsed = matcher.group(1) + matcher.group(2);
   }
}

答案 4 :(得分:0)

我要做的是:

if(zipcode.matches("\\d{5}-") //if zipcode is five digits (\d{5}) followed by a hyphen (-)...
{
    zipcode = zipcode.substring(0, zipcode.length() - 1); //...make zipcode equal itself minus the last character
}

答案 5 :(得分:0)

^([0-9]{5})\-$

例如regex example),09090-的匹配将是:

0: [0,6] 09090-
1: [0,5] 09090

你可以用火柴替换它

/^([0-9]{5})[\-][0-9]{4}$/   //skip replacement.