【发布时间】:2018-08-22 23:48:59
【问题描述】:
所以输入:
arrondissement d
我应该得到输出:
Arrondissement de Boulogne-sur-Mer
Arrondissement Den Bosch
所以它应该返回两个结果。所以在下面的代码中,我将单词的每个第一个字符都大写了,但这不正确,因为有些单词不是以大写开头的。
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();
}
【问题讨论】:
-
我认为你是在重新发明轮子,这个问题可以像在线代码一样解决。使用
String的内置函数