Java 检查字符串是否以给定字符开头,不考虑大小写

Java 检查字符串是否以给定字符开头,不考虑大小写,java,android,string,Java,Android,String,因此,对于输入: arrondissement d 我应该得到输出: Arrondissement de Boulogne-sur-Mer Arrondissement Den Bosch 因此,它应该返回这两个结果。所以在下面的代码中,我已经大写了单词的每个第一个字符,但这是不正确的,因为有些单词不是以大写字母开头的 public ArrayList<City> getAllCitiesThatStartWithLetters(String letters) { Arr

因此,对于输入:

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();
}
public ArrayList GetAllCitiesthattStartLitters(字符串字母){
ArrayList filteredCities=新建ArrayList();
如果(MCITES!=null){
适用于(城市:MCITES){
if(city.getName().startsWith(新大写字母))){
filteredCities.add(城市);
}
}
}
返回过滤器地址;
}
公共字符串大写(字符串capString){
StringBuffer capBuffer=新的StringBuffer();
Matcher-capMatcher=Pattern.compile(“([a-z])([a-z]*)”,Pattern.CASE不区分大小写);
while(capMatcher.find()){
capMatcher.appendReplacement(capBuffer,capMatcher.group(1.toUpperCase()+capMatcher.group(2.toLowerCase());
}
返回capMatcher.appendTail(capBuffer.toString();
}
您可以使用此正则表达式
(?i)搜索词。*
而不是
(?i)
,这意味着不区分大小写

String searchWord = "arrondissement d";
String regex = "(?i)" + Pattern.quote(searchWord) + ".*";

boolean check1 = "Arrondissement de Boulogne-sur-Mer".matches(regex);  //true
boolean check2 = "Arrondissement Den Bosch".matches(regex);            //true

我使用转义来转义输入中的特殊字符。

String
有一个非常有用的方法,它带有一个
ignoreCase
参数,因此您可以检查字符串的某个区域是否与另一个字符串大小写不敏感地匹配

String alpha = "My String Has Some Capitals";
String beta = "my string";
if (alpha.regionMatches(true, 0, beta, 0, beta.length())) {
    System.out.println("It matches");
}

不要使用正则表达式进行比较,而是使用
String.toLowerCase()
,这样两个字符串都是小写的,不需要考虑大写值。使用
String.split(“”)
将短语转换为字符串数组,您将能够轻松地将每个索引的第一个字符转换为大写字母。重新组合字符串数组以形成短语,就在这里。

您可以使用apache字符串utils:

import org.apache.commons.lang.StringUtils;
...
StringUtils.startsWithIgnoreCase(city.getName(), letters)

我认为你是在重新发明轮子,这个问题可以通过类似在线代码的方式解决。使用
String
的内置函数
String
中没有
ToLower()
方法。你认为这是什么语言?