Перейти к контенту

Подробно про Substring в Java

Метод подстроки String очень полезен в программировании Core Java. Это фундаментальный метод выполнения операций со строками. Substring извлекает последовательность символов из String и возвращает ее как новый объект String.

У метода Substring есть два варианта. Первый принимает только один аргумент, а другой — два.

 

Подстрока (int beginIndex)

Этот метод вернет новый объект String, содержащий подстроку данной строки из указанного startIndex (включительно). Это получит часть String, начинающуюся с заданного beginIndex и до последнего символа String.

Синтаксис таков

public String substring(int beginIndex)

где beginIndex — индекс, с которого начать извлечение возвращаемой подстроки (включительно)
Ключевая идея состоит в том, что он получит все символы из индекса, указанного в beginIndex, до последнего символа в строке.

Например, если у нас есть строка «ABCDE», символ в индексе 2 будет «C». Следовательно, «ABCDE» .substring (2) вернет все символы от «C» до «E», что является строкой «CDE».

Пример использования Substring в Java

public class SubstringTest {
   public static void main(String[] args) {
      String testString = "ABCDEFGHIJ";
      System.out.println(testString.substring(0));
      System.out.println(testString.substring(1));
      System.out.println(testString.substring(2));
      System.out.println(testString.substring(3));
      System.out.println(testString.substring(4));
      System.out.println(testString.substring(5));
      System.out.println(testString.substring(6));
      System.out.println(testString.substring(7));
      System.out.println(testString.substring(8));
      System.out.println(testString.substring(9));
   }
}

А вот вывод приведенного выше кода.

ABCDEFGHIJ
BCDEFGHIJ
CDEFGHIJ
DEFGHIJ
EFGHIJ
FGHIJ
GHIJ
HIJ
IJ
J

substring(int beginIndex, int endIndex)

Этот метод вернет новый объект String, содержащий подстроку данной строки от указанного startIndex до endIndex. И получит часть String, начиная с данного beginIndex и до указанного endIndex.

public String substring(int beginIndex, int endIndex)

где beginIndex — индекс, с которого нужно начать извлечение возвращаемой подстроки. (включительно)
endIndex — индекс, с которого нужно закончить извлечение возвращаемой подстроки. (эксклюзив)

Смысл в том, что мы можем указать, где начинать и заканчивать копирование символов из исходной строки.

Помните также, что beginIndex является включающим, а endIndex — эксклюзивным. Например, символ в индексе 2 строки «ABCDE» — это «C», а символ в индексе 4 — «E». Возвращенная строка будет содержать символы от «C» включительно до символа «E» (то есть мы не включаем E). Результат — «CD».

public class SubstringTest {  
   public static void main(String[] args) {
      String testString = "ABCDEFGHIJ";
      System.out.println(testString.substring(0,5));
      System.out.println(testString.substring(1,5));
      System.out.println(testString.substring(2,5));
      System.out.println(testString.substring(0,6));
      System.out.println(testString.substring(1,6));
      System.out.println(testString.substring(2,6));
      System.out.println(testString.substring(0,7));
      System.out.println(testString.substring(1,7));
      System.out.println(testString.substring(2,7));
   }
}

Вывод

ABCDE
BCDE
CDE
ABCDEF
BCDEF
CDEF
ABCDEFG
BCDEFG
CDEFG

Вот пример программы, которая примет строку и распечатает все возможные подстроки.

import java.util.Scanner;
public class PrintAllSubstring {  
   public static void main(String[] args) {
      System.out.println("Enter a string:");
      Scanner in = new Scanner(System.in);
      String inputString = in.nextLine();
      for (int beginIndex = 0; beginIndex < inputString.length(); beginIndex++) {
         for (int endIndex = beginIndex + 1; endIndex <= inputString.length(); endIndex++) {
            System.out.println(inputString.substring(beginIndex, endIndex));
         }
      }
   }
}

И вот результат, предполагающий, что была введена строка wxyz.

Enter a string:
wxyz
w
wx
wxy
wxyz
x
xy
xyz
y
yz
z

Вот пример того, как получить середину строки с помощью метода substring в алгоритме.

 

public class MiddleStrTest {
   public static void main(String[] args) {
      System.out.println("A       --> " + getMiddleString("A"));
      System.out.println("AB      --> " + getMiddleString("AB"));
      System.out.println("ABC     --> " + getMiddleString("ABC"));
      System.out.println("ABCD    --> " + getMiddleString("ABCD"));
      System.out.println("ABCDE   --> " + getMiddleString("ABCDE"));
      System.out.println("ABCDEF  --> " + getMiddleString("ABCDEF"));
      System.out.println("ABCDEFG --> " + getMiddleString("ABCDEFG"));
   }
   private static String getMiddleString(String str) {
      if (str.length() <= 2) {
         return str;
      }
      int beginIndex = (str.length() - 1) / 2;
      int endIndex = beginIndex + 2 - (str.length() % 2);
      return str.substring(beginIndex, endIndex);
   }
}

Вывод

A       --> A
AB      --> AB
ABC     --> B
ABCD    --> BC
ABCDE   --> C
ABCDEF  --> CD
ABCDEFG --> D

Вот пример программы, которая перевернет строку.

public class ReverseTest {
   public static void main(String[] args) {
      System.out.println(reverse("ABCDEFG"));
   }
   private static String reverse(String str) {
      if (str.length() <= 1) {
         return str;
      }
      return reverse(str.substring(1)) + str.substring(0, 1);
   }
}

Это выведет обратную строку ABCDEFG:
GFEDCBA
Вот пример программы, которая проверит, является ли строка палиндромом или нет.

public class PalTest {
   public static void main(String[] args) {
      System.out.println(palindrome("ABCBA"));
      System.out.println(palindrome("ABCCBA"));
      System.out.println(palindrome("ABCCXA"));
      System.out.println(palindrome("ABCDEFG"));
   }
   private static boolean palindrome(String str) {
      if (str.length() <= 1) {
         return true;
      }
      String first = str.substring(0, 1);
      String last = str.substring(str.length() - 1);
      return first.equals(last)
            && palindrome(str.substring(1, str.length() - 1));
   }
}

Вывод

true
true
false
false

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)