Диапазоны подстрок (Java)

1

Как я мог получить три подстроки из одного, что-то вроде "Мне 50"? Я должен отменить его ("50 утра я"), но нужно только знать, как диапазоны (не допустимые диапазоны, такие как "от 3 до 5" или аналогичные слова, потому что слова могут отличаться). Спасибо.

ss1 = string.substring(0, index); // index = " ";
ss2 = string.substring(index+1, **?** );
ss3 = string.substring( **?** , string.length());
Теги:
string
substring

4 ответа

1

Шаги:

  • разделите исходную строку на основе одного или нескольких пробелов
  • повторять все слова в обратном порядке

Образец кода:

    String str = "I am 50";
    String[] array = str.split("\\s+");

    StringBuffer buffer = new StringBuffer();
    for (int i = array.length - 1; i >= 0; i--) {
        buffer.append(" ").append(array[i]);
    }
    String reverse = buffer.substring(1);
0

Я бы использовал функцию String#split(String) здесь.

Что вы можете сделать, это вызвать string.split(" "); и это разделит строку на независимые слова. Затем вы можете просто изменить массив.


String str = "I am 50";
StringBuilder builder = new StringBuilder(str.length);
String[] words = str.split(" ");
for(int i = words.length - 1; i >= 0; i--){
    builder.append(words[i]);
    builder.append(' ');
}
String result = builder.toString().trim();
  • 0
    Измените условие на> 0, добавьте последнее слово после цикла, и тогда нет необходимости в обрезке.
0

Если вы не прочь использовать классы Apache ArrayUtils и StringUtils, то это самый короткий путь

String[] words = string.split("\\s");
ArrayUtils.reverse(words);
System.out.println(StringUtils.join(words," "));
0

вы можете использовать string.split(""), который возвращает вам массив строк - отдельные слова. Затем вы можете изменить массив и рассчитать диапазоны

Ещё вопросы

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