Есть небольшая проблема, которую я пытаюсь решить, это часть кода, которая в основном проверяет версии по версиям на других машинах через файлы версий. Он просматривает имена этих файлов и в настоящий момент удаляет все символы.
Сначала я попробовал:
private String getLatestVerFile( List<String> verFiles ) {
String latestVerFile = null;
long lastMod = Long.MIN_VALUE;
for (String file : verFiles ) {
if ( Long.parseLong( file.replaceAll( "[^0-9]", "" ) ) > lastMod ) {
latestVerFile = file;
lastMod = Long.parseLong( file.replaceAll( "[^0-9]", "" ) );
}
}
return latestVerFile;
}
Проблема здесь в том, что для файлов задано несколько версий, предполагается, что они возвращают самую последнюю версию, а в некоторых случаях это не так:
ex:
R9.10 = 910
R9.26_P1 = 9261
R9.01 = 901
R10.1 = 101
В этом случае R10.1 будет последней версией.
Лично я хотел бы, чтобы они приняли более стандартную и простую схему нумерации релизов, но это вне моего контроля.
Моя идея состояла в том, чтобы попытаться справиться с этим как с двойным. Я подумал, что вы можете использовать [^ 0-9.] Для поиска в Google, как показано ниже.
private String getLatestVerFile( List<String> verFiles ) {
String latestVerFile = null;
double lastMod = Double.MIN_VALUE;
for (String file : verFiles ) {
if ( Double.parseDouble( file.replaceAll( "[^0-9.]", "" ) ) > lastMod ) {
latestVerFile = file;
lastMod = Double.parseDouble( file.replaceAll( "[^0-9.]", "" ) );
}
}
return latestVerFile;
}
Тем не менее, это не работает. Я думаю, что это может быть вызвано тем, что имя файла, например, R9.10.ver, и, возможно, оно будет выглядеть как «9.10». и пытается сделать это двойным. Коллега сказал, что использует R (\ d +. \ D +) (_ P \ d + 1) .ver, но я не знаю, с чего начать все это, или как он узнает, что фильтровать из строки.
Цель состоит в том, чтобы получить это:
ex:
R9.10 = 9.10
R9.20_P1 = 9.201
R10.11 = 10.11
R10.20_P1 = 10.201
Но я особенно застрял на том, как я могу это сделать. Совет? Я полагаю, что часть моей проблемы в том, что я честно не очень хорошо понимаю регулярные выражения и как выбирать, какие части игнорировать в шаблоне.