Подтвердить что ты не робот

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

У меня есть строка (которая в основном является именем файла после соглашения об именах) abc.def.ghi

Я хотел бы извлечь подстроку перед первой . (то есть точкой)

В java doc api я не могу найти метод в String, который делает это.
Я что-то упускаю? Как это сделать?

4b9b3361

Ответ 1

посмотрите String.indexOf и String.substring.

Убедитесь, что вы проверили -1 для indexOf.

Ответ 2

Вы можете просто split строку..

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];

Ответ 3

Принятый ответ правильный, но он не говорит вам, как его использовать. Так вы используете функции 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

Ответ 4

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

String filename = "abc.def.ghi";

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

см. javadoc [2.6] [3.1]

Ответ 5

или вы можете попробовать что-то вроде

"abc.def.ghi".substring(0,"abc.def.ghi".indexOf(c)-1);

Ответ 6

Как использовать регулярное выражение?

String firstWord = filename.replaceAll("\\..*","")

Это заменяет все от первой точки до конца на "" (т.е. оно очищает ее, оставляя вам то, что вы хотите)

Здесь тест:

System.out.println("abc.def.hij".replaceAll("\\..*", "");

Вывод:

abc

Ответ 7

В java.lang.String вы получаете некоторые методы, такие как indexOf(): который возвращает вам первый индекс строки char/. и lstIndexOf: который возвращает вам последний индекс String/char

Из Java Doc:

  public int indexOf(int ch)
  public int indexOf(String str)

Возвращает индекс внутри этой строки первого вхождения указанного символа.