这可能不是解决您的特定问题的最佳方法,但您可以使用String.matches(String regex)方法或等效的匹配器。我们只需要从您的未来标题构建一个正则表达式。这变得很复杂。

List matchingDvds(String titleFragment) {

String escapedFragment = Pattern.quote(titleFragment);

// The pattern may have contained an asterisk, dollar sign, etc.

// For example, M*A*S*H, directed by Robert Altman.

Pattern pat = Pattern.compile(escapedFragment, Pattern.CASE_INSENSITIVE);

List foundDvds = new ArrayList<>();

for (DVD dvd: catalog) {

Matcher m = pat.matcher(dvd.getTitle());

if (m.find()) {

foundDvds.add(dvd);

}

}

return foundDvds;

}

但是这样做效率低下,而且它纯粹用Java来完成。您最好尝试以下技巧之一:

了解Collator和CollationKey类。

如果你别无选择,只能留在Java世界,请在DVD上添加一个方法,boolean matches(String fragment)。让DVD告诉你它匹配的是什么。

使用数据库。如果它支持不区分大小写的排序规则,则以这种方式声明DVD表的title列。无论你选择什么,使用JDBC或Hibernate或JPA或Spring Data。

如果数据库支持高级文本搜索(如Oracle),请使用该搜索。

回到Java世界,请使用Apache Lucene并可能使用Apache Solr。

使用针对不区分大小写的匹配调整的语言。

如果您可以等到Java 8,请使用lambda表达式。你可以避开Pattern和Matcher类,我通过建立正则表达式这样上面使用:

String escapedFragment = Pattern.quote(titleFragment);

String fragmentAnywhereInString = ".*" + escapedFragment + ".*";

String caseInsensitiveFragment = "(?i)" + fragmentAnywhereInString;

// and in the loop, use:

if(dvd.getTitle().matches(caseInsensitiveFragment)) {

foundDvds.add(dvd);

}

但这编译模式太多次。那么下壳什么呢?

if (dvd.getTitle().toLowerCase().contains(titleFragment.toLowerCase()))

恭喜;你刚刚发现了土耳其问题。除非您在toLowerCase中声明语言环境,否则Java将查找当前语言环境。而较低的外壳是缓慢的,因为它必须考虑到土耳其无点我和虚线I.至少你没有模式,没有匹配。

java contains 大小写_用.contains方法忽略大小写的选项?相关推荐

  1. python模糊匹配忽略大小写_在python中忽略大小写的简单方法?

    如果搜索多个单词,则创建一个集合是有意义的:print(set(brown_sents).intersection(zip(repeat(most_ambiguous_word), word_clas ...

  2. java mongo忽略大小写_Java Spring Mongo排序忽略大小写问题

    我正在使用Spring-Data-mongodb对MongoDB执行各种请求. 当尝试使用忽略大小写执行分页和排序时,出现异常, 这是我的代码: Sort.Order order = new Sort ...

  3. java replace 忽略大小写_java替换字符串时忽略大小写

    替换字符串大家都用的很熟悉了,但是估计日常很少用到替换时忽略大小写,今天问了身边几个工作超10年的java程序员,竟然大家都不知道怎么写了,这种基础代码竟然都淡忘了.正好学习整理一下,在这里也分享备忘 ...

  4. java字符串的比较(区分大小写、忽略大小写)

    字符串对比 问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符 ...

  5. java关闭通道_调用map方法后,Java 7文件通道未正确关闭

    我正在研究一个sc2replay解析工具.我在MPQLIB http://code.google.com/p/mpqlib/之上构建它 不幸的是,该工具使用文件通道来读取bzip文件, 并使用map( ...

  6. java 中append()_调用append()方法在Java中构造一个StringBuffer对象

    StringBufferappend()方法将特定参数的String表示形式附加到序列中.它是java.lang.StringBuffer类的方法.此方法返回对该对象的引用. 该方法更改方法中调用的对 ...

  7. java 隐藏标题栏_两种方法一句代码隐藏Activity的标题栏

    把Activity的标题栏隐藏有两种方法.一种是在在Activity里面设置javacode.还有一种是在项目的清单文件AndroidManifest.xml中设置模版样式. 一.在Activity中 ...

  8. java 匿名委托_委托,匿名方法,λ 表达式

    1.委托:委托本质上就是函数指针,但由于指针过于灵活,因此在很多语言中都采用了更加安全的替代类型,比如Delphi的对象方法和C#的委托.委托使得方法可以做为参数进行传递,极大的方便了程序的处理(事件 ...

  9. java junit 运行_运行Junit方法项目启动不了

    从控制台看不出任何有用信息,通过JUnit右键"Copy Failure List"将信息拷贝出来 TestStart.start initializationError(org. ...

  10. java 当前时间戳_通过各种方法 获取当前系统时间、时间戳

    php中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的含义,可灵活变通. 1.获取当前时间方法date() 很简单,这就是获取时间的方法,格式为:date($format, $time ...

最新文章

  1. 通过Lazada日销千件,国内爆款如此打开东南亚爆单之门
  2. 在终端显示文本的中间部分
  3. vue require css html,requirejs vue vue.router简单框架
  4. lm016l c语言编程,基于MCS51-LM016L (液晶屏)
  5. OAuth2.0 微信授权机制
  6. python抽取指定url页面的title_Python新手写爬虫全过程记录分析
  7. [IT新应用]无线投影技术
  8. IP地址规划设计技术
  9. win10运行python没有硬编码器_windows下关于python的编解码问题
  10. C语言中mac是什么意思,CMAC是什么意思
  11. uclinux 与 linux的区别
  12. 校招生入职半年多后担任社招面试官的体验
  13. notepad++ paste data vertically
  14. Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to 以及Spring事务失效的原因和解决方案
  15. crt和zoc7的快捷键记录
  16. 如何成为一名架构师,架构师成长之路
  17. 2021.6~2022.6实习、秋招总结
  18. 关于PyCharm中python模块无法安装的问题
  19. wuc-tab标签点击不了_买白酒时,不论啥牌子,只要标签上有“这行字”,全是酒精勾兑酒...
  20. 单片机控制一盏灯的亮与灭程序解释

热门文章

  1. 计算机语言培训机构排行榜,TIOBE 2月编程语言排行榜
  2. Teemo Attacking 提莫攻击
  3. excel函数去重_Excel去除重复值方法汇总
  4. python做一个财务系统_用6行python代码做一个财务机器人
  5. 用LED驱动框架注册led设备的示例代码
  6. 深入Java内存区域与OOM
  7. python3自动发送邮件并添加附件
  8. Win300英雄服务器不显示,win7系统玩不了300英雄的解决方法
  9. Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
  10. 车载ECU软件刷新flash driver制作