Удаление символов в строке

Рейтинг: 1Ответов: 2Опубликовано: 18.10.2014

Здравствуйте!

Есть строка, например, String out = "qwerty"; Я хочу удалить из нее с 1 по 3 символы. Возможно ли это? Читал про метод delete, но он только для классов StringBuffer и StringBuilder. Если ли для String что-то похожее? Если нет, то как правильно скопировать строку из String в StringBuilder или StringBuffer и обратно?

Ответы

▲ 2Принят

Как вариант можно использовать метод substring(int indexBegin, int indexEnd), он вернёт вам строку начиная с позиции indexBegin до позиции indexEnd. Отсчёт символов ведется с нуля. Так же возможно применение того же метода, с одним параметром - indexBegin, который вернёт вам строку от указанного индекса до конца строки.

▲ 2

Используя String(да, у него нету как такого delete):

Если немного текста и не лень написать что-то своё, тогда как вариант сделать как-то так:

String deleteCharacters(String str, int from, int to) {
    return str.substring(0,from)+str.substring(to);
}

возвращает строку с удаленными символами в диапазоне [trom, to) (не включно с to)

String out = "qwerty";
out = deleteCharacters(out, 1, 3); //qrty

но мне больше нравиться когда в аргументы идёт количество после первой координаты. тогда:

String deleteSomeCharacters(String str, int from, int count) {
    return str.substring(0,from)+str.substring(from+count);
}

А если есть желание то можно поиграться и написать что-то с вырезанием больше чем одного диапазона символов используя вараргс(varargs), например:

String deleteSomeCharacters(String str, int...fromCount) {
    String newStr = new String(str);
    int deleter = 0;
    for (int i = 0; i < fromCount.length; i+=2) {
        newStr = newStr.substring(0, fromCount[i]-deleter) +
            newStr.substring(fromCount[i]+fromCount[i+1]-deleter);
        deleter += fromCount[i+1];
    }
    return newStr;
}

Используя StringBuffer:

String out = "qwerty";
//вызываем конструктор со строкой в качестве аргумента
StringBuffer stringBuffer = new StringBuffer(out);
stringBuffer.delete(1,3);
out = stringBuffer.toString(); //qrty