Судя по названию вашего метода и его возвращаемому значению, все, что вы хотите найти, - это входная строка с самым низким целым числом в качестве идентификатора версии.
Для этого должно хватить ниже.Никаких циклов не требуется
public class Foo {
public static void main(String[] args) {
System.out.println(getOldestVersion("abc.12", "abc.14"));
}
public static String getOldestVersion(String v1, String v2) {
return parseInteger(v1) > parseInteger(v2) ? v2 : v1;
}
public static int parseInteger(String input) {
return Integer.valueOf(input.replaceAll("\\D", ""));
}
}
Если ваша входная строка похожа на 12.13.14.15
, вы можете использовать
public class Foo {
public static void main(String[] args) {
System.out.println(getOldestVersion("12.18", "14.15"));
}
public static String getOldestVersion(String v1, String v2) {
return Stream.of(v1.split("\\.")).mapToInt(Integer::parseInt).min().orElse(Integer.MAX_VALUE) > Stream.of(v2.split("\\.")).mapToInt(Integer::parseInt).min().orElse(Integer.MAX_VALUE)
? v2 : v1;
}
public static int parseInteger(String input) {
return Integer.valueOf(input.replaceAll("\\D", ""));
}
}