java - 用于替换的字符串正则表达式

标签 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;
    }

最佳答案

我会这样做:

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

关于java - 用于替换的字符串正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319979/

相关文章:

java - 带有半透明重叠条的 JFreeChart

javascript - 匹配字符串,除非以字符开头和结尾

java和正则表达式: how to match a string with lithreal parenthesis?

c# - 替换所有非 ASCII 字符,C# 中的直角字符除外

c++ - 使用 RegEx 在 C++ 中剥离多行注释

java - WebLogic 上 Jenkins 的 LinkageError

java - 如何查看 Java 日志?

Java - 比较通过表单提交的日期与存储在 mysql 数据库中的日期 - 如何?

java - 将 swing 组件绘制到图形

javascript - Google Calendar API 日期输出的正则表达式