How to Get the Substring Before a Character in Java


How can we obtain the substring before a character in Java?

Suppose we have this string.

String str = "name:description";

We want to obtain name, before the colon :.

1. Using split()

We can use the split() method to do this.

String[] splitted = str.split(":");
// ["name", "description"]

This will yield an array of strings containing the substrings around the given delimiter, which is a colon in this case.

Note that split() takes the delimiter’s regular expression, so we can match more than just a single character.

We can then obtain the first element of the array, which will be name.

String substr = splitted[0] // "name"

2. Using indexOf() and substring()

We can obtain the first occurrence of a character using indexOf().

int delimiterIndex = str.indexOf(":");

If no delimiter exists, indexOf() will return -1. We can check for this and conditionally run substring() to get the substring up to that index.

if (delimiterIndex != -1) {
  String substr = str.substring(0 , delimiterINdex) // "name"
}

3. Using StringUtils.substringBefore()

If we’re using commons-lang, we can make use of StringUtils.substringBefore() to achieve the same functionality.

String substr = StringUtils.substringBefore(str, ":"); // "name"