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))) {
filteredCities.add(city);
}
}
}
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, capMatcher.group(1).toUpperCase() + capMatcher.group(2).toLowerCase());
}
return capMatcher.appendTail(capBuffer).toString();
}