14 个答案:

答案 0 :(得分:54)

如果您使用的是Java 8

List list = new ArrayList<>();

boolean containsSearchStr = list.stream().anyMatch("search_value"::equalsIgnoreCase);

答案 1 :(得分:27)

我猜你的意思是在用字符串搜索时忽略大小写?

我不知道,但您可以尝试将字符串转换为搜索到较低或大写,然后搜索。

// s is the String to search into, and seq the sequence you are searching for.

bool doesContain = s.toLowerCase().contains(seq);

编辑:

正如Ryan Schipper建议的那样,你也可以(也可能会更好)做seq.toLowerCase(),具体取决于你的情况。

答案 2 :(得分:12)

private boolean containsIgnoreCase(List list, String soughtFor) {

for (String current : list) {

if (current.equalsIgnoreCase(soughtFor)) {

return true;

}

}

return false;

}

答案 3 :(得分:4)

这可能不是解决您的特定问题的最佳方法,但您可以使用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告诉你它匹配的内容。

使用数据库。如果它支持不区分大小写的排序规则,则以此方式声明title表的DVD列。使用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.至少你没有图案,也没有匹配。

答案 4 :(得分:3)

在Java 8中,您可以使用Stream接口:

return dvdList.stream().anyMatch(d -> d.getTitle().equalsIgnoreCase("SomeTitle"));

答案 5 :(得分:2)

将两个操作数转换为小写(或大写)的直观解决方案具有为每个项目实例化额外String对象的效果,这对大型集合无效。此外,正则表达式比简单字符比较慢一个数量级。

String.regionMatches()允许以不区分大小写的方式比较两个String区域。使用它,可以编写一个不区分大小写的“包含”方法的有效版本。我使用以下方法;它基于Apache commons-lang的代码:

public static boolean containsIgnoreCase(final String str, final String searchStr) {

if (str == null || searchStr == null) {

return false;

}

final int len = searchStr.length();

final int max = str.length() - len;

for (int i = 0; i <= max; i++) {

if (str.regionMatches(true, i, searchStr, 0, len)) {

return true;

}

}

return false;

}

答案 6 :(得分:2)

您无法保证始终会获得String个对象,或者您在List中使用的对象实现了忽略大小写的方法。

如果您确实希望将集合中的String与独立于案例的内容进行比较,您需要迭代集合并进行比较,无需大小写。

String word = "Some word";

List aList = new ArrayList<>(); // presume that the list is populated

for(String item : aList) {

if(word.equalsIgnoreCase(item)) {

// operation upon successful match

}

}

答案 7 :(得分:0)

private List FindString(String stringToLookFor, List arrayToSearchIn)

{

List ReceptacleOfWordsFound = new ArrayList();

if(!arrayToSearchIn.isEmpty())

{

for(String lCurrentString : arrayToSearchIn)

{

if(lCurrentString.toUpperCase().contains(stringToLookFor.toUpperCase())

ReceptacleOfWordsFound.add(lCurrentString);

}

}

return ReceptacleOfWordsFound;

}

答案 8 :(得分:0)

对dvdList和您的searchString进行空检查

if (!StringUtils.isEmpty(searchString)) {

return Optional.ofNullable(dvdList)

.map(Collection::stream)

.orElse(Stream.empty())

.anyMatch(dvd >searchString.equalsIgnoreCase(dvd.getTitle()));

}

答案 9 :(得分:0)

我知道我参加聚会有点晚了,但是在Kotlin中,您可以轻松使用:

fun Collection.containsIgnoreCase(item: String) = any {

it.equals(item, ignoreCase = true)

}

val list = listOf("Banana")

println(list.contains("banana"))

println(list.containsIgnoreCase("BaNaNa"))

答案 10 :(得分:0)

Kotlin开发人员,请选择any / none

private fun compareCategory(

categories: List?,

category: String

) = categories?.any { it.equals(category, true) } ?: false

答案 11 :(得分:0)

如果您正在寻找包含&不等于然后我会提出以下解决方案。

唯一的缺点是,如果您在以下解决方案中的searchItem是“ DE”,那么它也会匹配

List list = new ArrayList<>();

public static final String[] LIST_OF_ELEMENTS = { "ABC", "DEF","GHI" };

String searchItem= "def";

if(String.join(",", LIST_OF_ELEMENTS).contains(searchItem.toUpperCase())) {

System.out.println("found element");

break;

}

答案 12 :(得分:0)

对于Java 8,您可以再添加一个解决方案,如下所示

List list = new ArrayList<>();

String searchTerm = "dvd";

if(String.join(",", list).toLowerCase().contains(searchTerm)) {

System.out.println("Element Present!");

}

答案 13 :(得分:-1)

你可以应用这个小技巧。

将所有字符串更改为相同案例:上限或小写

对于C#代码:

列出searchResults = sl.FindAll(s =&gt; s.ToUpper() .Contains(seachKeyword.ToUpper()));

对于Java代码:

import java.util.*;

class Test

{

public static void main(String[] args)

{

String itemCheck="check";

ArrayList listItem =new ArrayList();

listItem.add("Check");

listItem.add("check");

listItem.add("CHeck");

listItem.add("Make");

listItem.add("CHecK");

for(String item :listItem)

{

if(item.toUpperCase().equals(itemCheck.toUpperCase()))

{

System.out.println(item);

}

}

}

}

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. Android利用ViewPager实现滑动广告板
  2. 华人“军火专家”——黄仁勋 1
  3. VIJOS国庆节模拟赛之繁星春水
  4. 一个FragmentActivity多个Fragment的生命周期事件记录
  5. cmd mysql 报错_客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案
  6. 我们需要什么样的恐怖小说?
  7. C和指针之部分理解和编码总结
  8. Reason: image not found
  9. 队列入队和出队程序演示
  10. 关于浙大考研878历年试卷的说明
  11. 想象力惊人!只凭一句话,AI就能脑补出动漫小片
  12. zabbix监控软件的安装,详细教程
  13. 你知道几种编程思想?
  14. 瑞萨单片机iap串口升级boot程序与app程序合并的工程构建-学习记录
  15. grafana是什么?
  16. 抖音seo企业号,矩阵同步分发,抖音搜索框SEO优化系统搭建。
  17. 如何开始做一个开源项目?他的亲身经历值得参考
  18. 18天精读掌握《费曼物理学讲义卷一》 第11天 2019/6/27
  19. 在高通410c开发板使用PyQt开发电动窗帘Demo(五)
  20. 我在大学读计算机 英语,托福极速英语:我在大学主修计算机

热门文章

  1. Samsung 6818平台首次编译遇到的问题
  2. autojs 绝美ui模板5
  3. (九)ThunderbirdMail配置QQ邮件服务
  4. 【LaTeX】公式书写工具 | LaTeX转MathML(Word适用)| 公式截图转LaTeX| LaTeX学习(偏公式输入方面)
  5. 【部署】蓝绿发布、滚动发布、灰度发布,有什么区别
  6. 谷歌大牛Jeff Dean亲自撰文:深度学习研究的黄金十年
  7. 你中招了吗?《心理学常见误区》
  8. 网易云易盾正式成为“中国短视频与直播联盟”常务理事
  9. 可行性研究报告【列文】2022-5.6
  10. 【离散数学】搜集、并搜集、交搜集、求A = {{Φ, 2}, {2}}的并搜集和交搜集