Java 在可扩展字符串中搜索时,如何忽略字符的大小写?

Java 在可扩展字符串中搜索时,如何忽略字符的大小写?,java,android,android-adapter,android-search,android-typeface,Java,Android,Android Adapter,Android Search,Android Typeface,我在我的应用程序中实现了一种搜索机制,当你过滤列表中的名字时,它会突出显示匹配的名字,唯一的问题是它只突出显示小写字母,而不会突出显示大写或紧跟大写字母的任何单词 下面是我用来突出显示搜索字符的代码: if(! searchText.isEmpty()) { if(guest.getGuestFirstName().contains(searchText)){ int startPos = guest.getGuestFir

我在我的应用程序中实现了一种搜索机制,当你过滤列表中的名字时,它会突出显示匹配的名字,唯一的问题是它只突出显示小写字母,而不会突出显示大写或紧跟大写字母的任何单词

下面是我用来突出显示搜索字符的代码:

if(! searchText.isEmpty()) {
                if(guest.getGuestFirstName().contains(searchText)){
                    int startPos = guest.getGuestFirstName().indexOf(searchText.toLowerCase(Locale.US));
                    int endPos = startPos + searchText.length();

                    if (startPos != -1) // This should always be true, just a sanity check
                    {
                        Spannable spannable = new SpannableString(guest.getGuestFirstName());
                        Typeface firstNameFont = Typeface.createFromAsset(context.getAssets(), "fonts/Graphik-Semibold.otf");
                        spannable.setSpan(new CustomTypefaceSpan("", firstNameFont), startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                        guestFirstName.setText(spannable);
                    }
                } else {
                    Objects.requireNonNull(guestFirstName).setText(guest.getGuestFirstName());

                }
现在如果我搜索“an”,它会突出显示“angela heely”中的“an”字符,但如果我搜索“an”,它不会突出显示任何字符,反之亦然,比如说如果“angela heely”以大写字母开头,而我搜索“an”,它不会突出显示“an”。可能是我缺少的一些简单的东西,但是如果能提供任何帮助或想法,使其不区分大小写来突出显示搜索的文本,我们将不胜感激

也可以打开任何正则表达式。立即搜索文本字符串,返回用户搜索的任何内容,而不考虑大小写。说“安吉拉”、“安”等


谢谢

您的问题在于该行中的内容:

 if(guest.getGuestFirstName().contains(searchText)){
contains区分大小写,因此“an”和“an”不相同。 将其更改为:

 if(guest.getGuestFirstName().toLowerCase().contains(searchText.toLowerCase())){
此外,请更改此项:

int startPos = guest.getGuestFirstName().indexOf(searchText.toLowerCase(Locale.US));
对此(出于同样的原因):

int startPos = guest.getGuestFirstName().toLowerCase().indexOf(searchText.toLowerCase());