Читать строку до символа java

Строки в Java, методы класса String

Для работы со строками в Java существует класс String. И для объявления новой строки можно использовать один из способов:

String str1 = "Java"; String str2 = new String(); // пустая строка String str3 = new String(new char[] {'h', 'e', 'l', 'l', 'o'}); String str4 = new String(new char[]{'w', 'e', 'l', 'c', 'o', 'm', 'e'}, 3, 4);

В последнем варианте 3 – это начальный индекс (индексы считаются с нуля), а 4 – это кол-во символов. То есть, строка str4 содержит строку «come».

Важной особенностью строк в Java является их неизменяемость. Это значит, что в строке нельзя попросту изменить какой-либо символ и получить другую строку. Все строки создаются и существуют в неизменном виде, пока не будут уничтожены (как правило, автоматически сборщиком мусора). А переменные str1, str2, str3 и str4 следует воспринимать лишь как ссылки на эти строки. То есть, в любой момент в программе можно записать такую конструкцию:

что означает изменение ссылки str1 на строку «hello», на которую указывает ссылка str3. Соответственно, если на первую строку «Java» не будет указывать никакая ссылка, то она автоматически уничтожается.

Разберем работу часто используемых методов класса String. Первый метод, как написано, возвращает длину строки. Например, если нам дана вот такая строка

то метод length() вернет значение 4

применить метод toCharArray():

char[] helloArray = str1.toCharArray();

то получим массив символов с содержимым этой строки. Следующий пример. У нас есть пустая строка

тогда мы можем определить это, например, так:

if(s.length() == 0) System.out.println("String is empty");
if(s isEmpty()) System.out.println("String is empty");

Но, если строка задана вот так:

то это означает, что ссылка s не указывает ни на какой класс String и, соответственно, мы не можем вызывать методы этого класса. В этом случае проверку следует делать так:

if(s != null && s.length() == 0) System.out.println("String is empty");

мы здесь сначала проверяем: указывает ли ссылка s на объект класса и если это так, то только потом будет идти обращение к методу length().

Объединение строк

Для соединения строк можно использовать операцию сложения («+»):

String str1 = "Java"; String str2 = "Hello"; String str3 = str1 + " " + str2; System.out.println(str3); // Hello Java

При этом если в операции сложения строк используется не строковый объект, например, число, то этот объект преобразуется к строке:

Еще один метод объединения — метод join() позволяет объединить строки с учетом разделителя. Например, две строки

String str1 = "Java"; String str2 = "Hello";

будут сливаться в одно слово «HelloJava», если их объединить с помощью оператора +:

Читайте также:  Split string on pattern python

но если мы хотим, чтобы две подстроки при соединении были разделены пробелом, то можно воспользоваться методом join() следующим образом:

String str3 = String.join(" ", str2, str1); // Hello Java

В общем случае вместо пробела здесь можно ставить любой разделитель в виде строки.

Обратите внимание, что каждый раз при объединении строк мы получали новую строку как результат объединения.

Извлечение символов и подстрок

Для извлечения символов по индексу в классе String определен метод

Он принимает индекс, по которому надо получить символов, и возвращает извлеченный символ:

String str = "Java"; char c = str.charAt(2); System.out.println(c); // v

(здесь как и в массивах первый индекс равен 0).

Если надо извлечь сразу группу символов или подстроку, то можно использовать метод

getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

  • srcBegin: индекс строки, с которого начинается извлечение символов;
  • srcEnd: индекс строки, до которого идет извлечение символов;
  • dst: массив символов, в который будут извлекаться символы;
  • dstBegin: индекс массива dst, с которого надо добавлять извлеченные из строки символы.
String str = "Hello world!"; int start = 6; int end = 11; char[] dst=new char[end - start]; str.getChars(start, end, dst, 0); System.out.println(dst); // world

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

Для простого сравнения строк используются методы equals() (с учетом регистра) и equalsIgnoreCase() (без учета регистра). Оба метода в качестве параметра принимают строку, с которой сравниваются:

String str1 = "Hello"; String str2 = "hello"; System.out.println(str1.equals(str2)); // false System.out.println(str1.equalsIgnoreCase(str2)); // true

Обратите внимание, что в отличие сравнения числовых и других данных примитивных типов для сравнения строк не рекомендуется использовать оператор ==. То есть, записывать вот такое сравнение лучше не использовать:

(хотя, оно тоже будет работать). Вместо этого следует использовать метод equals() класса String. Другая пара методов: int compareTo(String str) и int compareToIgnoreCase(String str) также сравнивают строки между собой, но в отличие от equals() они еще позволяют узнать больше ли одна строка другой или нет. Если возвращаемое значение этих методов больше 0, то первая строка больше второй, если меньше нуля, то, наоборот, вторая больше первой. Если строки равны, то возвращается 0. Для определения больше или меньше одна строка, чем другая, используется лексикографический порядок. То есть, например, строка «A» меньше, чем строка «B», так как символ ‘A’ в алфавите стоит перед символом ‘B’. Если первые символы строк равны, то в расчет берутся следующие символы. Например:

String str1 = "hello"; String str2 = "world"; String str3 = "hell"; System.out.println(str1.compareTo(str2)); // -15 - str1 меньше чем str2 System.out.println(str1.compareTo(str3)); // 1 - str1 больше чем str3 System.out.println(str1.compareTo(str1)); // 0 - str1 равна str1
  • ignoreCase: надо ли игнорировать регистр символов при сравнении (если значение true, то регистр игнорируется);
  • toffset: начальный индекс в вызывающей строке, с которого начнется сравнение;
  • other: строка, с которой сравнивается вызывающая;
  • oofset: начальный индекс в сравниваемой строке, с которого начнется сравнение;
  • len: количество сравниваемых символов в обеих строках.
String str1 = "Hello world"; String str2 = "I work"; boolean result = str1.regionMatches(6, str2, 2, 3); System.out.println(result); // true

Поиск в строке

Метод indexOf() находит индекс первого вхождения подстроки в строку, а метод lastIndexOf() — индекс последнего вхождения. Если подстрока не будет найдена, то оба метода возвращают -1:

String str = "Hello world"; int index1 = str.indexOf('l'); // 2 int index2 = str.indexOf("wo"); //6 int index3 = str.lastIndexOf('l'); //9 System.out.println(index1+" "+index2+" "+index3);

Метод startsWith() позволяют определить начинается ли строка с определенной подстроки, а метод endsWith() позволяет определить заканчивается строка на определенную подстроку:

String str = "myfile.exe"; boolean start = str.startsWith("my"); //true boolean end = str.endsWith("exe"); //true System.out.println(start+" "+end);

Замена в строке

String str = "Hello world"; String replStr1 = str.replace('l', 'd'); // Heddo wordd String replStr2 = str.replace("Hello", "Bye"); // Bye world System.out.println(replStr1); System.out.println(replStr2);

Обрезка строк

String str = " hello world "; str = str.trim(); // hello world System.out.println(str);

Метод substring() возвращает подстроку, начиная с определенного индекса до конца или до определенного индекса:

String str = "Hello world"; String substr1 = str.substring(6); // world String substr2 = str.substring(3,5); //lo System.out.println(substr1); System.out.println(substr2);

Изменение регистра

Метод toLowerCase() переводит все символы строки в нижний регистр, а метод toUpperCase() — в верхний:

String str = "Hello World"; System.out.println(str.toLowerCase()); // hello world System.out.println(str.toUpperCase()); // HELLO WORLD

Разбиение строки на подстроки

Метод split() позволяет разбить строку на подстроки по определенному разделителю. Разделитель – это какой-нибудь символ или набор символов (передается в качестве параметра). Например, разобьем текст на отдельные слова (учитывая, что слова разделены пробелом):

String text = "Я люблю язык Java!"; String[] words = text.split(" "); for(String word : words) System.out.println(word);

Источник

Читайте также:  Bs4 python поиск ссылок

В Java, как получить подстроку от строки до символа с?

У меня есть строка (которая в основном является именем файла после соглашения об именах) abc.def.ghi Я хотел бы извлечь подстроку перед первой . (то есть точкой) В java doc api я не могу найти метод в String, который делает это.
Я что-то упускаю? Как это сделать?

7 ответов

public String[] split(String regex) 

Обратите внимание, что java.lang.String.split использует значение регулярного выражения ограничителя. В принципе, так.

String filename = "abc.def.ghi"; // full file name String[] parts = filename.split("\\."); // String array, each element is text between dots String beforeFirstDot = parts[0]; // Text before the first dot 

Конечно, это разбито на несколько строк для clairity. Его можно было бы записать как

String beforeFirstDot = filename.split("\\.")[0]; 

Ваше предложение неверно, потому что java.lang.String.split принимает значение регулярного выражения в качестве атрибута, а не просто строку. Все «.» в вашем примере нужно изменить на «\\.» Тогда это будет работать 🙂

Принятый ответ правильный, но он не говорит вам, как его использовать. Так вы используете функции indexOf и подстроки.

String filename = "abc.def.ghi"; // full file name int iend = filename.indexOf("."); //this finds the first occurrence of "." //in string thus giving you the index of where it is in the string // Now iend can be -1, if lets say the string had no "." at all in it i.e. no "." is not found. //So check and account for it. if (iend != -1) String subString= filename.substring(0 , iend); //this will give abc 

Это неверный код, потому что вы не можете поместить объявление переменной в тело оператора If без фигурных скобок.

Читайте также:  Float python number of decimals

Если ваш проект уже использует commons-lang, StringUtils обеспечивают хороший метод для этой цели:

String filename = "abc.def.ghi"; String start = StringUtils.substringBefore(filename, "."); // returns "abc" 

Источник

Подстрока в сроке на Java или как работает метод substring()

Строки в основном определяются как массив символов. В Java объекты String являются неизменяемыми, что означает, что константа не может быть изменена после создания.

Что такое подстрока в Java?

Часть строки называется подстрокой в Java. Другими словами, подстрока является подмножеством другой строки. Метод substring() возвращает новую строку, которая является подстрокой этой строки. Метод является перегруженным.

Синтаксис

substring (// любой из методов) 

Пример

пример подстроки

Здесь строка «Edureka», но когда вы разбиваете ее на блоки, она состоит из подстрок, которые в итоге вычисляют строку.

Методы

В основе метода substring() два основных метода. Они есть:

String substring (int begIndex)

Этот метод имеет два варианта и возвращает новую строку, которая является подстрокой этой строки. Подстрока начинается с символа по указанному индексу beginIndex до конца строки.

Синтаксис

public String substring (int begIndex)

Примечание: индекс начинается с 0, что относится к первому символу строки.

Пример

String substring​(int beginIndex, int endIndex)

Этот метод имеет два варианта и возвращает новую строку, которая является подстрокой этой строки. Подстрока начинается с символа с указанным индексом beginIndex и продолжается до конца строки или до endIndex – 1, если присутствует другой аргумент.

Синтаксис

public String substring​(int beginIndex, int endIndex)

Пример

Программа

Пример кода для печати всех подстрок заданной строки:

class Course < // Function to print all sub strings static void subString(char str[], int n) < // Pick starting point for (int len = 1; len System.out.println(); > > > // Driver program to test the above function public static void main(String[] args) < char str[] = ; subString(str, str.length); > >

вывод

Далее, используя метод substr()

public class Substring < // Function to print all substring public static void SubString(String str, int n) < for (int i = 0; i < n; i++) for (int j = i+1; j public static void main(String[] args) < String str = "abcd"; SubString(str, str.length()); >>

Источник

Оцените статью