посмотрите на String.indexOf
и String.substring
.
Убедитесь, что вы выбрали -1 для indexOf
.
Как насчет использования регулярного выражения?
String firstWord = filename.replaceAll("\\..*","")
Это заменяет все от первой точки до конца на «" (т. е. очищает ее, оставляя вам то, что вы хотите)
Вот тест:
System.out.println("abc.def.hij".replaceAll("\\..*", "");
Выход:
abc
Вы можете просто расколоть строку ..
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];
Вот код, который возвращает подстроку из String
до любого из заданного списка символов:
/**
* Return a substring of the given original string until the first appearance
* of any of the given characters.
* <p>
* e.g. Original "ab&cd-ef&gh"
* 1. Separators {'&', '-'}
* Result: "ab"
* 2. Separators {'~', '-'}
* Result: "ab&cd"
* 3. Separators {'~', '='}
* Result: "ab&cd-ef&gh"
*
* @param original the original string
* @param characters the separators until the substring to be considered
* @return the substring or the original string of no separator exists
*/
public static String substringFirstOf(String original, List<Character> characters) {
return characters.stream()
.map(original::indexOf)
.filter(min -> min > 0)
.reduce(Integer::min)
.map(position -> original.substring(0, position))
.orElse(original);
}
Если ваш проект уже использует commons-lang , StringUtils обеспечивают хороший метод для этой цели:
String filename = "abc.def.ghi";
String start = StringUtils.substringBefore(filename, "."); // returns "abc"
см. javadoc [2.6] [д2] [3,1] [/ д2]
Принимаемый ответ правильный, но он не говорит вам, как его использовать. Так вы используете функции 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 found.
//So check and account for it.
String subString;
if (iend != -1)
{
subString= filename.substring(0 , iend); //this will give abc
}
В java.lang.String вы получаете некоторые методы, такие как indexOf (): который возвращает вам первый индекс char / string. и lstIndexOf: который возвращает вам последний индекс String / char
From Java Doc:
public int indexOf(int ch)
public int indexOf(String str)
Возвращает индекс внутри этой строки первого вхождения указанного символа.
или вы можете попробовать что-то вроде
"abc.def.ghi".substring(0,"abc.def.ghi".indexOf(c)-1);