Cómo convertir una cadena de Java contra una expresión regular patrón?

noveno:

Quiero convertir una versión del componente (por ejemplo 2.6.0) a esta forma G02R06C00. Creo que es posible con expresiones regulares y el patrón con Java pero no encontré la forma. He visto ejemplos para que coincida con una cadena contra un patrón (en este caso la expresión regular sería G\d\dR\d\dC\d\d, supongo), pero no encuentro cómo convertir una cadena a otra cadena con un patrón. Gracias por adelantado.

Lo que he hecho es:

String gorocoVersion = version.replaceAll("(\\d*)\\.(\\d*)\\.(\\d*)", "G$1R$2C$3");

que produce G2R6C0, sin embargo, le falta añadir 0a los partidos 2dígitos. Por lo tanto, tengo que dividir cadena de entrada antes y no puedo usar más replaceAll, es por eso que yo estaba buscando la opción más inteligente que añadir automáticamente 0antes sencilla dígitos también de acuerdo con el patrón de salida G\d\dR\d\dC\d\d, al igual que podemos encontrar en Word o Excel

Algo que funciona con la versión instantánea, pero es muy feo:

/**
 * @return version in G00R00C00(-SNAPSHOT) format.
 */
private String formatVersion() {
    String gorocoVersion = "";
    if (StringUtils.isNotBlank(version)) {
        String[] versionTab = version.split("\\.");
        String partG = String.format("%02d", Integer.parseInt(versionTab[0]));
        String partR = String.format("%02d", Integer.parseInt(versionTab[1]));

        String partC = versionTab[2];
        String snapshotSuffix = "-SNAPSHOT";
        if (partC.endsWith(snapshotSuffix)) {
            partC = String.format("%02d",
                    Integer.parseInt(partC.substring(0, partC.indexOf('-')))) + snapshotSuffix;
        } else {
            partC = String.format("%02d", Integer.parseInt(partC));
        }

        gorocoVersion = "G" + partG + "R" + partR + "C" + partC;
    }
    return gorocoVersion;
}
Ilya Lysenko:

Pruebe este método:

private static String formatVersion(String version) {
    Pattern pattern = Pattern.compile("^(\\d+)\\.(\\d+)\\.(\\d+)(-SNAPSHOT)*$");
    Matcher matcher = pattern.matcher(version);
    if (matcher.find()) {
        return String.format("G%02dR%02dC%02d", Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)), Integer.parseInt(matcher.group(3)));
    } else {
        throw new IllegalArgumentException("Unsupported version format");
    }
}

Salida para el versionvalor de parámetro 2.6.0:

G02R06C00

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=385355&siteId=1
Recomendado
Clasificación