Попытка решения через subString и indexOf. То что можно собрать просто пройдя по массивы понятно, но вот как через subString? Если через try-catch
try {
            String[] split = string.trim().split("\\s");
            return string.substring(string.indexOf(" ") + 1,
                    (string.lastIndexOf(split[4]) + split[4].length()));
        }
        catch (StringIndexOutOfBoundsException e) {
            throw new TooShortStringException();
        }