Check if String starts with given characters regardless of upper case, lower case

So for input:

arrondissement d

I Should get output:

Arrondissement de Boulogne-sur-Mer
Arrondissement Den Bosch

So it should give back both results. So in below code I’ve capitalized every first character of the word but this isn’t correct because some words do not start with an upper case.

public ArrayList<City> getAllCitiesThatStartWithLetters(String letters) {
    ArrayList<City> filteredCities = new ArrayList<>();

    if (mCities != null) {
        for (City city : mCities) {
            if (city.getName().startsWith(new capitalize(letters))) {
    return filteredCities;

public String capitalize(String capString){
    StringBuffer capBuffer = new StringBuffer();
    Matcher capMatcher = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(capString);
    while (capMatcher.find()){
        capMatcher.appendReplacement(capBuffer, +;

    return capMatcher.appendTail(capBuffer).toString();