Получить подстроку только с доступными символами из индекса

1

Есть ли какая-либо строковая функция в Java, которая позволит мне извлечь подстроку, такую как QString :: mid:

http://doc.qt.io/qt-5/qstring.html#mid

Когда индекс превышает длину строки, я хочу, чтобы функция возвращала пустую строку, а когда индекс + длина подстроки больше, я хочу, чтобы функция возвращала только доступные символы.

Я написал фрагмент кода, который это делает, но я отказываюсь верить, что такой fuction уже не на Java:

private static String  Mid(String s, int index, int length){
    if(s.length()>=length+index){
        return s.substring(index, length+index);
    }
    else if(s.length()>=index) {
        return s.substring(index, s.length());
    }
    else{
        return "";
    }
}

Есть что-то подобное в Java?

Теги:
string
substring

2 ответа

4
Лучший ответ

Похоже, вам просто нужно Math.min пару раз:

int start = Math.min(index, s.length());
int end = Math.min(index + length, s.length());
return s.substring(start, end);
  • 0
    Хотя мне нравится этот подход, он позволит start и end в конечном итоге за пределами строки. Но так как OP также не занимался этим делом, он все же лучше оригинального подхода. index = Math.max(index, 0); length = Math.max(length, 0); мог бы справиться с этим, но, возможно, вы поймете что-то чище.
2

Короткий ответ заключается в том, что в классе String в Java нет никакой средней функции.

Тем не менее, библиотека Apache Commons StringUtils имеет средние методы и другие функции манипуляции строками. Полезно познакомиться со всеми библиотеками сообщества Apache, поскольку они широко используются, открываются и сохраняются необходимость изобретать колесо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню