Есть ли какая-либо строковая функция в 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?
Похоже, вам просто нужно Math.min
пару раз:
int start = Math.min(index, s.length());
int end = Math.min(index + length, s.length());
return s.substring(start, end);
Короткий ответ заключается в том, что в классе String в Java нет никакой средней функции.
Тем не менее, библиотека Apache Commons StringUtils имеет средние методы и другие функции манипуляции строками. Полезно познакомиться со всеми библиотеками сообщества Apache, поскольку они широко используются, открываются и сохраняются необходимость изобретать колесо.
start
иend
в конечном итоге за пределами строки. Но так как OP также не занимался этим делом, он все же лучше оригинального подхода.index = Math.max(index, 0); length = Math.max(length, 0);
мог бы справиться с этим, но, возможно, вы поймете что-то чище.