- Parse a String in Java
- Use the split Method to Parse a String in Java
- Use Scanner to Parse a String in Java
- Use StringUtils to Parse a String in Java
- Java Parse String
- Introduction to Java Parse String
- Initialization of Parse String
- Example #1
- Example #2
- Example #3
- Example #4
- Example #5
- Conclusion – Java Parse String
- Recommended Articles
- Класс String
- Операторы + и += для String
- Форматирование строк
- Строковой ресурс
- Извлечь строки из строковых массивов в ресурсах
- Методы
- public char charAt (int index)
- public int codePointAt(int index)
- public int codePointBefore(int index)
- public int codePointCount(int start, int end)
- public int compareTo(String string)
- public int compareToIgnoreCase (String string)
- public String concat (String string)
- public boolean contains (CharSequence cs)
- public boolean contentEquals(CharSequence cs)
- public boolean contentEquals(StringBuffer strbuf)
- public static String copyValueOf(char[] data)
- public static String copyValueOf (char[] data, int start, int length)
- public boolean endsWith(String suffix)
- public boolean equals (Object string)
- public boolean equalsIgnoreCase(String string)
- public static String format(Locale locale, String format, Object. args)
- public byte[] getBytes()
- public byte[] getBytes(String charsetName)
- public void getBytes(int start, int end, byte[] data, int index) и другие перегруженные версии
- public void getChars(int start, int end, char[] buffer, int index)
- public int hashCode()
- public int indexOf(int ch)
- public int indexOf (int ch, int fromIndex)
- public int indexOf (String str)
- public int indexOf (String str, int fromIndex)
- public String intern ()
- public boolean isEmpty ()
- public int lastIndexOf (String string) и другие перегруженные версии
- public static String join (CharSequence delimiter, CharSequence. elements)
- public int length()
- public boolean matches(String regularExpression)
- public int offsetByCodePoints (int index, int codePointOffset)
- public boolean regionMatches (int thisStart, String string, int start, int length)
- public boolean regionMatches (boolean ignoreCase, int thisStart, String string, int start, int length)
- public String replace(CharSequence target, CharSequence replacement) и другие перегруженные версии
- public String replaceAll (String regularExpression, String replacement)
- public String replaceFirst (String regularExpression, String replacement)
- public String[] split (String regularExpression) и другие перегруженные версии
- public boolean startsWith(String prefix)
- public boolean startsWith(String prefix, int start)
- public CharSequence subSequence (int start, int end)
- public String substring(int start) и другие перегруженные версии
- public char[] toCharArray()
- public String toLowerCase() и другие перегруженные версии
- public String toString ()
- public String toUpperCase()
- public String trim()
- public static String valueOf(long value) и другие перегруженные версии
- Генерируем случайную строку
- Сравнение строк: equals() или ==?
- Сортировка символов в строке
- StringTokenizer
- Перевернуть строку
Parse a String in Java
This tutorial explains how to parse a string in Java using various methods. Parsing is the process of taking a string and processing it to extract information.
Use the split Method to Parse a String in Java
The split() method of the String class works by splitting the source string keeping the original string unmodified, and returns an array of substrings of the original string. This method has two variants.
The split(String regex) method takes a regular expression of type string as an argument and splits the string around the regular expression’s matches. If the regular expression fails to match any part of the original string, it returns an array with one element: the source string.
The split(String regex, int limit) method works the same but takes limit , which means how many strings to be returned. If the limit is negative, the returned array can contain as many substrings as possible when the limit is 0. The array would contain all substrings, excluding the trailing empty strings.
Use Scanner to Parse a String in Java
Scanner is generally used to parse primitive types and strings using a regular expression. It breaks the input into tokens using a delimiter pattern which be default matched white-space.
We create a scanner with a specified string object. The useDelimiter() method of the Scanner class is used to set the delimiter pattern. We can either pass a Pattern object or string as a pattern. To get all the tokens of the string, we loop through the tokens using the hasNext() method and print the output.
Use StringUtils to Parse a String in Java
Apache Commons StringUtils class provides tools that facilitate easy working with Strings. The maven dependency to add this library is given below.
We use the substringBetween(String str, String open, String close) method of the StringUtils class to parse a given string. This method extracts a substring nested between two strings.
Источник
Java Parse String
By Priya Pedamkar
Introduction to Java Parse String
Parsing String in java is known as converting data in the String format from a file, user input, or a certain network. Parsing String is the process of getting information that is needed in the String format. String parsing in java can be done by using a wrapper class. Using the Split method, a String can be converted to an array by passing the delimiter to the split method. The split method is one of the methods of the wrapper class.
String parsing can also be done through StringTokenizer. StringTokenizer class allows its constructor to break the String into tokens. StringTokenizer is much simpler than other classes. StringTokenizer is a legacy class, so everyone must avoid the use of this class.
Web development, programming languages, Software testing & others
Syntax:
String strMsg = “An Example of String”;
String delims = “[delimiters]+”;
String tokenString = strMsg.split(delims);
In the above syntax, multiple delimiter can be used inside the square brackets. “+” sign after bracket treats multiple delimiter as a single delimiter.
Initialization of Parse String
In java, a String can be converted into char, Object, int, date, time, etc. String parsing is initialized by a certain java class method as per the data type is required.
Example #1
In this example, we can see how String is parsing into different types of formats like date & integer. Similarly, we can use other methods to convert a string into other formats.
Code:
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringParsingInDiffTypeExample <
public static void main(String[] args)throws Exception <
System.out.println(«String parsing into Date Oject : \n»);
String strDate1 = «12/01/2020»;
String strDate2 = «12-Jan-2020»;
String strDate3 = «Sun, Jan 12 2020»;
//converting date format into the date object here
SimpleDateFormat strFormat1 = new SimpleDateFormat(«dd/MM/yyyy»);
SimpleDateFormat strFormat2 = new SimpleDateFormat(«dd-MMM-yyyy»);
SimpleDateFormat strFormat3 = new SimpleDateFormat(«E, MMM dd yyyy»);
//date retrieving here after parsing through parse method
Date dateObj1 = strFormat1.parse(strDate1);
Date dateObj2 = strFormat2.parse(strDate2);
Date dateObj3 = strFormat3.parse(strDate3);
//printing here the date as a char
System.out.println(«Date String 1 = » + strDate1 + «\t Date Object 1 = » + dateObj1);
System.out.println(«Date String 2 = » + strDate2 + «\t Date Object 2 = » + dateObj2);
System.out.println(«Date String 3 = » + strDate3 + «\t Date String 3 = » + dateObj3);
System.out.println(«\n\nString parsing into integer : \n»);
String strVal1 = «50»;
String strVal2 = «1000»;
String strVal3 = «20000»;
//Converting String into int using parseInt()
int intValue1 = Integer.parseInt(strVal1);
int intValue2 = Integer.parseInt(strVal2);
int intValue3 = Integer.parseInt(strVal3);
//Printing integer value
System.out.println(intValue1);
System.out.println(intValue2);
System.out.println(intValue3);
>
>
Output:
Output for the above-given program is given below; we can see how String is converted into different data type by using different methods.
Example #2
In this example, using the split method for parsing of the string to array format.
Code:
public class SplitMethodExample <
public static void main(String args[]) <
System.out.println(«String Parsing Example #1 :\n»);
//In this example one space character is used as a delimiter
String str1 = new String(«Nothing is impossible in the world!»);
String delimSpace = » «;
String[] arr1 = str1.split(delimSpace);
for (String uniqVal1 : arr1) <
System.out.println(uniqVal1);
>
System.out.println(«\n\nString Parsing Example #2 :\n»);
//In this example a comma is used as a delimiter
String str2 = new String(«Alabama,California,texas,30,78»);
String delimsComma = «[,]+»;
String[] arr2 = str2.split(delimsComma);
for (String uniqVal2 : arr2) <
System.out.println(uniqVal2);
>
System.out.println(«\n\nString Parsing Example #3 :\n»);
//In this example multiple delimiter is used used as a delimiter
String str3 = new String(«Many of the people always say without thinking ,do you know ?Possibly Not!»);
String delims = «[. ]+»;
String[] arr3 = str3.split(delims);
for (String uniqVal3 : arr3) <
System.out.println(uniqVal3);
>
>
>
Output:
The above given an example contains three sections, all the three-section using the different delimiter for parsing the String. In the below-given screenshot, we can see the output of the above-given program.
Example #3
In this example, the StringTokenizer class is used for parsing. The StringTokenizer class’s constructor takes two parameters: the first one is the string & the second one is the delimiter. This class contains some methods, i.e. hasMoreElements() to check whether the next index holding any value or not while nextElement() returns the value at the next index.
Code:
import java.util.StringTokenizer;
public class StringTokenizerParsingExample <
public static void main(String[] args) <
System.out.println(«StringTokenizer Parsing Example: \n»);
String strText = «Kansas,Louisiana,Maryland,Massachusetts,Mississippi,New Jersey»;
String delims = «,»;
StringTokenizer stObj = new StringTokenizer(strText, delims);
//Iterating here for the next element
while (stObj.hasMoreElements()) <
System.out.println(«StringTokenizer Output: » + stObj.nextElement());
>
>
>
Output:
The above parsing output is given below; we can see how comma-separated values are listed in the next column.
Example #4
This example shows how the indexOf method can be used effectively to parse any String in java. In this program, a String in the middle of the sentence is being converted to uppercase.
Code:
public class StringParsingExample <
public static void main(String args[]) <
String strPara = «The Paragraph needs additional citations for [verification]»;
int openIndex = strPara.indexOf(«[«);
int closedIndex = strPara.indexOf(«]»);
// extracting here the String inside of the square bracket
String subString = strPara.substring(openIndex+1, closedIndex);
//converting substring in the uppercase which is inside of
subString= subString.toUpperCase();
// concating here all the substrings
String modifiedPara = strPara.substring(0, openIndex + 1) + subString + strPara.substring(closedIndex);
System.out.println(modifiedPara);
>
>
Output: Output of the above-given program is given below.
Example #5
In this example, we can see how a string is converted into an array of chars.
Code:
public class StringParsingCharExample <
public static void main(String[] args) <
String strText = «Australia»;
char[] charArr = strText.toCharArray();
System.out.println(charArr.length);
char secondPosChar = strText.charAt(2);
System.out.println(secondPosChar);
char[] charSet = new char[9];
strText.getChars(0, 9, charSet, 0);
for (char uniqChar : charSet) <
System.out.println(uniqChar);
>
>
>
Output:
The Output for the above-given program is given below.
In the attached output screenshot, we can see how a String is converted into the array of characters by using methods toCharArray().
Conclusion – Java Parse String
In the above-given Article, we have gone through the parsing, String parsing in Java, etc. How the split method plays a role in parsing the data type. Some other ways are also available which can be used for parsing, such as StringTokenizer.
Recommended Articles
This has been a guide to Java Parse String. Here we discuss the syntax and initialization of the Java Parse String. you may also have a look at the following articles to learn more –
Java Training (40 Courses, 29 Projects, 4 Quizzes)
Источник
Класс String
Класс String очень часто используется программистами, поэтому его следует изучить очень хорошо.
Следует помнить, что объекты класса String являются неизменяемыми (immutable). Поэтому, когда вам кажется, что вы меняете строку, то на самом деле вы создаёте новую строку.
В Java есть специальные классы StringBuffer и StringBuilder, который допускают изменения в строке.
Классы String, StringBuffer, StringBuilder определены в пакете java.lang и доступны автоматически без объявления импорта. Все три класса реализуют интерфейс CharSequence.
Создать строку очень просто. Например, можно так:
Можно создать массив строк:
Можно создать пустой объект класса String:
Можно создать строку через массив символов:
Есть ещё конструктор, позволяющий задать диапазон символьного массива. Вам нужно указать начало диапазона и количество символов для использования:
Можно создать объект класса String из объекта классов StringBuffer и StringBuilder при помощи следующих конструкторов:
Операторы + и += для String
На языке Java знак плюс (+) означает конкатенацию строк (concatenation), иными словами — объединение строк.
Если один из операндов в выражении содержит строку, то другие операнды также должны быть строками. Поэтому Java сама может привести переменные к строковому представлению, даже если они не являются строками.
За кулисами Java за нас преобразовало число 4 в строку «4».
Форматирование строк
Предположим у нас есть строковый ресурс:
Чтобы вывести эту строку программно в элементе TextView, можно использовать код:
Представьте себе, что у вас несколько котов. Можно, конечно, завести для каждого кота свою строку. Но ведь строки очень похожи, меняются только имена и возраст. Также можно менять число лап и хвостов (что вы курите?).
В таких случаях можно применить форматирование строк. Нужно определить слова, которые мы будем менять и заменить их на специальный набор символов, которые начинаются с символа процента, затем идет число, увеличивающееся на единицу, далее $s для строк или $d для чисел. Итак, изменим наш строковой ресурс так:
Внесём изменения в код:
Если вас есть кот Васька и ему шесть лет, то добавляем две переменные и форматируем строку
Здесь показан простейший пример с форматированием. Помните о нём и применяйте в нужных местах.
Строковой ресурс
Строки желательно хранить в ресурсах (о ресурсах есть отдельная статья).
Программно доступ к строковому ресурсу делается так:
Извлечь строки из строковых массивов в ресурсах
Предположим, у вас есть строковый массив, определённый в файле strings.xml под именем cats_array. Тогда получить доступ к строкам из ресурсов можно так:
Методы
public char charAt (int index)
Возвращает символ с указанным смещением в этой строке. Отсчёт идёт от 0. Не надо использовать отрицательные и несуществующие значения, будьте серьёзнее. Для извлечения нескольких символов используйте getChars().
public int codePointAt(int index)
Возвращает Unicode-символ в заданном индексе
public int codePointBefore(int index)
Возвращает Unicode-символ, который предшествует данному индексу
public int codePointCount(int start, int end)
Вычисляет количество Unicode-символов между позициями start и end
public int compareTo(String string)
Сравнивает указанную строку, используя значения символов Unicode и вычисляет, какая из строк меньше, равна или больше следующей. Может использоваться при сортировке. Регистр учитывается. Если строки совпадают, то возвращается 0, если меньше нуля, то вызывающая строка меньше строки string, если больше нуля, то вызывающая строка больше строки string. Слова с большим регистром стоят выше слова с нижним регистром.
Отсортируем массив строк через пузырьковую сортировку.
В результате мы получим:
Как видите, от перемены мест слагаемых сумма сортировки коты не меняются.
public int compareToIgnoreCase (String string)
Сравнивает указанную строку, используя значения символов Unicode, без учёта регистра.
public String concat (String string)
Объединяет строку с указанной строкой. Возвращается новая строка, которая содержит объединение двух строк. Обратите внимание, что само имя метода содержит кота!
Метод выполняет ту же функцию, что и оператор + и можно было написать Сук + кот . Но настоящий кошатник будет использовать «кошачий» метод.
public boolean contains (CharSequence cs)
Определяет, содержит ли строка последовательность символов в CharSequence
public boolean contentEquals(CharSequence cs)
Сравнивает CharSequence с этой строкой.
public boolean contentEquals(StringBuffer strbuf)
Сравнивает StringBuffer с этой строкой
public static String copyValueOf(char[] data)
Создаёт новую строку, содержащую символы из указанного массива. Изменение массива после создания строки не изменяет созданную строку.
public static String copyValueOf (char[] data, int start, int length)
Создаёт новую строку, содержащую указанные символы из массива data начиная с позиции start (нумерация начинается с нуля) длинной length.
Если указать индекс вне границ строки, то возникнет исключение StringIndexOutOfBoundsException.
public boolean endsWith(String suffix)
Проверяет, заканчивается ли строка символами suffix.
public boolean equals (Object string)
Сравнивает указанный объект и строку и возвращает true, если сравниваемые строки равны, т.е. содержит те же символы и в том же порядке с учётом регистра.
Не путать метод с оператором ==, который сравнивает две ссылки на объекты и определяет, ссылаются ли они на один и тот же экземпляр. Смотри пункт Сравнение строк: equals() или ==?
public boolean equalsIgnoreCase(String string)
Сравнивает указанную строку с исходной строкой без учёта регистра и возвращает true, если они равны. Диапазон A-Z считается равным диапазону a-z.
public static String format(Locale locale, String format, Object. args)
Возвращает отформатированную строку, используя прилагаемый формат и аргументы, локализованных в данной области. Например дату или время
Склеиваем два слова, которые выводятся с новой строки. При этом второе слово выводится в верхнем регистре.
Конвертируем число в восьмеричную систему.
По аналогии выводим в шестнадцатеричной системе
Для верхнего регистра используйте %X, тогда вместо ff будет FF.
Для десятичной системы используйте %d.
Дату тоже можно выводить по разному.
Допустим, при выводе double получается 3.0. Как вывести 3, т.е. без нуля. И с учётом того, что например 3.1 должно выводиться как 3.1. Округление здесь не поможет.
public byte[] getBytes()
Конвертируем строку в набор байтов.
public byte[] getBytes(String charsetName)
Возвращает отформатированную строку, используя прилагаемую кодировку.
public void getBytes(int start, int end, byte[] data, int index) и другие перегруженные версии
Метод сохраняет символы в массив байтов, альтернатива методу getChars(). Часто используется при экспорте строк из различных источников, где используются другие символы Unicode. Например, Java по умолчанию использует 16-битовые символы Unicode, а в интернете часто строки используют 8-битовый код Unicode, ASCII и др.
public void getChars(int start, int end, char[] buffer, int index)
Метод для извлечения нескольких символов из строки. Вам надо указать индекс начала подстроки (start), индекс символа, следующего за концом извлекаемой подстроки (end). Массив, который принимает выделенные символы находится в параметре buffer. Индекс в массиве, начиная с которого будет записываться подстрока, передаётся в параметре index. Следите, чтобы массив был достаточного размера, чтобы в нём поместились все символы указанной подстроки.
public int hashCode()
Возвращает целое число — хэш-код для данного объекта.
public int indexOf(int ch)
Ищет появление указанного символа и возвращает позицию индекса. Если символа нет, то возвращается -1.
public int indexOf (int ch, int fromIndex)
Ищет индекс символа сh, начиная с позиции fromIndex
public int indexOf (String str)
Ищет подстроку str и возвращает индекс найденной подстроки. Если подстроки не существует, то возвращается -1.
public int indexOf (String str, int fromIndex)
Ищет подстроку str, начиная с позиции fromIndex и возвращает индекс найденной подстроки. Если подстроки не существует, то возвращается -1.
Смотри также схожий метод lastIndexOf().
public String intern ()
public boolean isEmpty ()
Проверяет, является ли строка пустой
Данный метод появился в API 9 (Android 2.1). Для старых устройств используйте String.length() == 0
public int lastIndexOf (String string) и другие перегруженные версии
Метод ищет в строке в обратном порядке и возвращает индекс последнего появления указанного символа. Если указанный символ не найден, то возвратится -1. Например, получить имя файла без расширения можно так:
public static String join (CharSequence delimiter, CharSequence. elements)
Метод появился в API 26. Склеивает слова указанным разделителем. Если слово является null, то null будет использоваться в качестве слова. Есть перегруженная версия.
В этом примере мы получаем позицию последней точки и получаем подстроку до неё.
public int length()
Возвращает длину строки
public boolean matches(String regularExpression)
Проверяет, соответствует ли строка регулярным выражениям.
public int offsetByCodePoints (int index, int codePointOffset)
Возвращает позицию, расположенную на расстоянии codePointOffset после начальной позиции, заданной параметром index
public boolean regionMatches (int thisStart, String string, int start, int length)
Метод сравнивает указанную часть строки с другой частью строки. Нужно задать индекс начала диапазон строки вызывающего объекта класса String. Строка для сравнивания передаётся в параметре string. Индекс символа, начиная с которого нужно выполнять сравнение передаётся в параметре start, а длина сравниваемой подстроки в параметре length.
public boolean regionMatches (boolean ignoreCase, int thisStart, String string, int start, int length)
Перегруженная версия. Метод сравнивает указанную часть строки с другой частью строки, игнорируя регистр.
public String replace(CharSequence target, CharSequence replacement) и другие перегруженные версии
Меняет символ или последовательность символов target на replacement
public String replaceAll (String regularExpression, String replacement)
Смотри также пример в задачнике — Удаление гласных из строки.
public String replaceFirst (String regularExpression, String replacement)
Удаляет первые символы при помощи регулярного выражения.
Например, если нужно удалить нули в начале чисел 001, 007, 000024, то можно использовать такой вызов.
public String[] split (String regularExpression) и другие перегруженные версии
Разбивает строку на массив из слов. Например, есть строка Васька Рыжик Мурзик Барсик и мы хотим получить массив имён котов:
aCats[0] = Васька
aCats[1] = Рыжик
aCats[2] = Мурзик
aCats[3] = Барсик
Также можно использовать регулярное выражение \\s+, чтобы учитывать любые типы пробелов, включая двойные и более пробелы подряд.
Будьте аккуратны при разбиении по запятой. Часто после запятой идёт пробел, поэтому нужно правильно установить разделитель.
Если исходная строка начинается с разделителя, первым элементом результирующего массива будет пустая строка. Но если исходная строка заканчивается разделителем, то пустой строки не будет.
У перегруженной версии метода есть дополнительный параметр limit, определяющий, какое количество раз шаблон regex будет применяться к исходной строке.
Также следует быть аккуратным с разделителем |. В регулярных выражениях | является специальным символом. Чтобы использовать вертикальную черту в качестве разделителя, нужно экранировать этот символ с помощью двух обратных слешей «\\|».
public boolean startsWith(String prefix)
Проверяет, начинается ли строка символами prefix с начала строки
public boolean startsWith(String prefix, int start)
Проверяет, начинается ли заданная строка символами prefix с указанной позиции.
public CharSequence subSequence (int start, int end)
Аналогичен методу substring(), но может использоваться для CharSequence.
public String substring(int start) и другие перегруженные версии
Создаёт новую последовательность/строку с символами из данной строки начиная с позиции start до конца строки/заканчивая символом с позиции end. Новая строка содержит символы от start до end — 1, поэтому берём на один символ больше.
Если указать индекс вне границ строки, то возникнет исключение StringIndexOutOfBoundsException.
public char[] toCharArray()
Копирует символы в этой строке в массив символов. Тот же результат можно получить через метод getChars(). Документация не рекомендует использовать данный метод, предлагая метод charAt().
public String toLowerCase() и другие перегруженные версии
Преобразовывает строку в нижний регистр. Преобразованием управляет заданный по умолчанию региональный язык.
public String toString ()
Возвращает строку. Для самой строки, которая сама уже является строкой, возвращать строку бессмысленно (о, как я загнул). Но на самом деле этот метод очень полезен для других классов.
public String toUpperCase()
Преобразовывает строку в верхний регистр. Преобразованием управляет заданный по умолчанию региональный язык.
public String trim()
Удаляет пробелы в начале и в конце строки.
public static String valueOf(long value) и другие перегруженные версии
Конвертирует содержимое (числа, объекты, символы, массивы символов) в строку.
Генерируем случайную строку
Допустим, нам нужна случайная строка из заданных символов.
Сравнение строк: equals() или ==?
Хотя в двух переменных содержится одно и то же слово, мы имеем дело с двумя разными объектами и оператор == вернёт false.
Однажды, когда деревья были большими, мне понадобилось сравнить две строки из разных источников. Хотя строки выглядели совершенно одинаково, сравнение при помощи оператора == возвращало false и путало мне все карты. И только потом я узнал, что нужно использовать метод equals(). Строка в Java — это отдельный объект, который может не совпадать с другим объектом, хотя на экране результат выводимой строки может выглядеть одинаково. Просто Java в случае с логическим оператором == (а также !=) сравнивает ссылки на объекты (при работе с примитивами такой проблемы нет):
Сортировка символов в строке
Есть несколько способов сортировки символов в заданной строке. Рассмотрим их.
Способ первый. Конвертируем строку в массив символов через toCharArray(). Запускаем два цикла. При сравнении символов нужно учитывать их регистр, поэтому мы не только сравниваем разные символы, но и одинаковые, чтобы символы в верхнем и нижнем регистре тоже были отсортированы.
Способ прекрасно работает на английских символах. Но строка «Котёнок» даст неправильный результат: Ккноотё. Символ «ё» попал в самый конец массива.
Способ второй. Обходимся без циклов и используем метод sort().
Проблема с «ё» осталась. При этом появилась другая проблема — сначала идут символы в верхнем регистре, потом в нижнем. Получилось КОкнотё.
Переписываем пример с использованием Comparator.
Проблема с «ё» осталась, но с регистрами всё хорошо.
Кстати, в Java 8 можно использовать Stream для подобных операций. В любом случае будьте внимательные с символами другой локали. Ни один пример не решил наших проблем.
StringTokenizer
Класс StringTokenizer разбивает строку на токены с указанным разделителем.
Перевернуть строку
Рассмотрим различные способы решения задачи.
Первый способ — представить строку в виде массива символов. Затем проходимся по всей длине массива с конца и получаем новую строку.
Можно не создавать массив символов, а извлекать каждый символ через метод charAt() и снова использовать цикл, прибавляя к символу предыдущую строку.
Можно воспользоваться готовым методом reverse() класса StringBuffer/StringBuilder.
Экзотический способ при помощи редко используемого класса Stack.
Разбиваем строку на массив символов и кладём каждый символ в стек. Далее начинаем брать элементы с верхушки стека. Из-за особенностей стека (первый вошёл, последний вышел), элементы будут браться задом-наперёд и мы получим нужный результат.
Особо упоротые программисты могут написать примеры с использованием рекурсии и побитового оператора XOR. Эти варианты не будем рассматривать.
Источник