Я пытаюсь создать новую строку, вставив «-» между смежными числами в строке, например, если строка ввода «bea345ful», строка вывода должна быть как « bea3-4-5ful ", но если строка ввода« be3u4t5ful », мне не нужно вставлять« - », поскольку ни одна из цифр не смежна.Java - вставка «-» между смежными цифрами в строке
Я могу заставить его работать со следующим кодом, но он терпит неудачу, когда в конце строки есть непрерывные цифры, например. «be3u4t5f67» в этом случае он выдает StringIndexOutOfBoundsException, которое, как я понимаю, происходит, потому что мой код не обрабатывает это условие. Любые предложения по его устранению?
public static String insertDash(String str){
String result = "";
for (int i = 0; i < str.length(); i ++) {
if (Character.isDigit(str.charAt(i)) && Character.isDigit(str.charAt(i + 1))) {
result+=str.charAt(i) + "-";
} else {
result+=str.charAt(i);
}
} return result;
Я уже пробовал это, и если я остановлюсь на str.length() - 1, тогда код не вставляет «-» между двумя последними цифрами, например, в «be3u4t5f67» он не будет выводить ожидаемый результат, be3u4t5f6-7 ", потому что он остановился на« 6 »и после него не нашел следующую цифру (что равно« 7 ») – codingdojo
Он находит это из-за этого условия:' Character.isDigit (str.charAt (i)) && Character.isDigit (str.charAt (i + 1)) '. Попробуйте отладки, чтобы увидеть, что еще не так, потому что это должно действительно исправить :) –
Рассмотрим случай, когда строка «bedu4tdf67k», в этом случае программа перестанет обрабатывать строку после «7» (согласно i
codingdojo