Я просто застрял в проблеме (может быть, просто). Но я не могу понять, как его решить, может быть, кто-то из вас может мне помочь.Java Strings to Int
я получаю в качестве входных данных строку с этим форматом:
D0001001.tiff
И мне нужно вернуться следующий (учитывая, что следующий является полученным incremente фактором одного
. .Вход: D0001001.tiff Выход: D0001002.tiff
нулей не может быть пропущено метод у меня есть это (без рефакторинга;))
private String getNextImageName(String last_image_name)
{
// Splits the name from the start to the . (not inclusive)
String next_name = last_image_name.substring(0, last_image_name.indexOf(".") - 1);
String next_extension = last_image_name.substring(last_image_name.indexOf(".") + 1, last_image_name.length() - 1);
String next_name_without_D = next_name.substring(1);
int next_name_withoud_D_value = Integer.parseInt(next_name_without_D);
// Increments to get the new name
next_name_withoud_D_value++;
String full_next_name = "D" + next_name_withoud_D_value + "." + next_extension;
return full_next_name;
}
Но результаты не так, как ожидалось:
Вход: D0002001.tiff Выход: D201.tif
-
Есть некоторые ограничения, например, число 0 не может исчезнуть, потому что в конечном итоге файл может зайца другой номер:
D0001001.tiff или D9999999001.tiff
но второй один идет только через 999
D0001001.tiff к D0001999.tiff
К этому моменту Я так застрял, что я не могу даже думать ...
Благодаря
Бросание ошибки кажется довольно интенсивным для плохого ввода. Почему не исключение IllegalArgumentException? – erickson
Спасибо msaeed. Он работает отлично. Я даже не понимаю код. Но этот afteernoon я начну изучать регулярное выражение. Как кажется, очень мощный. – Sheldon
Ужасный код по сравнению с ответом # 1 пенпингом. Почему люди переходят в Regex для таких решений? –