Java deleteCharAt Function - PullRequest
       0

Java deleteCharAt Function

0 голосов
/ 16 марта 2012

Я создал этот метод deleteCharAt, чтобы удалить символ из строки по его индексу:

public String deleteCharAt(String str, int i) {

    if (i == 0) {
        return str.substring(1);
    }
    else if (i == str.length()) {
        return str.substring(0, i-1);
    }

    String first = str.substring(0, i - 1);
    String second = str.substring(i+1);

    return first + second;
}

Однако он не работает должным образом, я думаю, что это может быть, потому что я не понимаю, какфункция подстроки работает.

Это выглядит правильно?Будет ли этот код успешно удалять i-й символ из строки?Или я испортил функцию подстроки?

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Это не совсем верно - это:

String first = str.substring(0, i - 1);

должно быть:

String first = str.substring(0, i);

(Вспомните простой пример - если i равен 1, вы хотите взять substring(0, 1), чтобы получить первый символ; substring(0, 0) даст пустую строку.)

потому что второй параметр substring уже исключительный .

Аналогично этой оптимизации:

else if (i == str.length()) {
    return str.substring(0, i);
}

должно быть:

else if (i == str.length() - 1) {
    return str.substring(0, i);
}

Вы также должны добавить проверку аргумента.

После внесения этих изменений этот код:

public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        System.out.println(deleteCharAt("0123456789", i));
    }
}

Дает этот вывод:

123456789
023456789
013456789
012456789
012356789
012346789
012345789
012345689
012345679
012345678
1 голос
/ 16 марта 2012
public static String deleteCharAt(String s, int pos) {
   StringBuffer buf = new StringBuffer( s.length() - 1 );
   buf.append( s.substring(0,pos) ).append( s.substring(pos+1) );
   return buf.toString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...