字符串正则表达式替换

时间:2015-05-19 08:05:07

标签: java regex

我有这种模式(N | S)(..)(W | E)(...)。hgt。我需要用(N | S)(..)(W | E)(...)替换它.xyz.hgt。

作为一个例子,如果我有N06E072.hgt,我需要用N06E072.xyz.hgt替换它。这适用于一组文件,其中值可能会根据纬度和经度而变化。 我编码的方法是提取纬度和值以及相应的长度和它的值。连接字符,然后用新的字符集简单替换这些字符集。有没有更好的方法呢?

private static final Pattern filePattern = Pattern.compile("(N|S)(..)(W|E)(...).*")
Matcher matcher = filePattern.matcher(file.getName());
    if (matcher.matches()) {
        String latDir = matcher.group(1);
        lat = Integer.parseInt(matcher.group(2));
        if (latDir.equalsIgnoreCase("s"))
            lat *= -1;
        String lonDir = matcher.group(3);
        lon = Integer.parseInt(matcher.group(4));
        if (lonDir.equalsIgnoreCase("w"))
            lon *= -1;
    }

1 个答案:

答案 0 :(得分:1)

我会这样做:

String s = "N06E072.hgt".replaceAll("([NS]{1}.{2}[WE]{1}.{3})\\.(.{3})", "$1.xyz.$2");