java contains 大小写_使用.contains方法忽略大小写的选项?
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方法忽略大小写的选项?相关推荐
- python模糊匹配忽略大小写_在python中忽略大小写的简单方法?
如果搜索多个单词,则创建一个集合是有意义的:print(set(brown_sents).intersection(zip(repeat(most_ambiguous_word), word_clas ...
- java mongo忽略大小写_Java Spring Mongo排序忽略大小写问题
我正在使用Spring-Data-mongodb对MongoDB执行各种请求. 当尝试使用忽略大小写执行分页和排序时,出现异常, 这是我的代码: Sort.Order order = new Sort ...
- java replace 忽略大小写_java替换字符串时忽略大小写
替换字符串大家都用的很熟悉了,但是估计日常很少用到替换时忽略大小写,今天问了身边几个工作超10年的java程序员,竟然大家都不知道怎么写了,这种基础代码竟然都淡忘了.正好学习整理一下,在这里也分享备忘 ...
- java字符串的比较(区分大小写、忽略大小写)
字符串对比 问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符 ...
- java关闭通道_调用map方法后,Java 7文件通道未正确关闭
我正在研究一个sc2replay解析工具.我在MPQLIB http://code.google.com/p/mpqlib/之上构建它 不幸的是,该工具使用文件通道来读取bzip文件, 并使用map( ...
- java 中append()_调用append()方法在Java中构造一个StringBuffer对象
StringBufferappend()方法将特定参数的String表示形式附加到序列中.它是java.lang.StringBuffer类的方法.此方法返回对该对象的引用. 该方法更改方法中调用的对 ...
- java 隐藏标题栏_两种方法一句代码隐藏Activity的标题栏
把Activity的标题栏隐藏有两种方法.一种是在在Activity里面设置javacode.还有一种是在项目的清单文件AndroidManifest.xml中设置模版样式. 一.在Activity中 ...
- java 匿名委托_委托,匿名方法,λ 表达式
1.委托:委托本质上就是函数指针,但由于指针过于灵活,因此在很多语言中都采用了更加安全的替代类型,比如Delphi的对象方法和C#的委托.委托使得方法可以做为参数进行传递,极大的方便了程序的处理(事件 ...
- java junit 运行_运行Junit方法项目启动不了
从控制台看不出任何有用信息,通过JUnit右键"Copy Failure List"将信息拷贝出来 TestStart.start initializationError(org. ...
- java 当前时间戳_通过各种方法 获取当前系统时间、时间戳
php中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的含义,可灵活变通. 1.获取当前时间方法date() 很简单,这就是获取时间的方法,格式为:date($format, $time ...
最新文章
- Android利用ViewPager实现滑动广告板
- 华人“军火专家”——黄仁勋 1
- VIJOS国庆节模拟赛之繁星春水
- 一个FragmentActivity多个Fragment的生命周期事件记录
- cmd mysql 报错_客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案
- 我们需要什么样的恐怖小说?
- C和指针之部分理解和编码总结
- Reason: image not found
- 队列入队和出队程序演示
- 关于浙大考研878历年试卷的说明
- 想象力惊人!只凭一句话,AI就能脑补出动漫小片
- zabbix监控软件的安装,详细教程
- 你知道几种编程思想?
- 瑞萨单片机iap串口升级boot程序与app程序合并的工程构建-学习记录
- grafana是什么?
- 抖音seo企业号,矩阵同步分发,抖音搜索框SEO优化系统搭建。
- 如何开始做一个开源项目?他的亲身经历值得参考
- 18天精读掌握《费曼物理学讲义卷一》 第11天 2019/6/27
- 在高通410c开发板使用PyQt开发电动窗帘Demo(五)
- 我在大学读计算机 英语,托福极速英语:我在大学主修计算机
热门文章
- Samsung 6818平台首次编译遇到的问题
- autojs 绝美ui模板5
- (九)ThunderbirdMail配置QQ邮件服务
- 【LaTeX】公式书写工具 | LaTeX转MathML(Word适用)| 公式截图转LaTeX| LaTeX学习(偏公式输入方面)
- 【部署】蓝绿发布、滚动发布、灰度发布,有什么区别
- 谷歌大牛Jeff Dean亲自撰文:深度学习研究的黄金十年
- 你中招了吗?《心理学常见误区》
- 网易云易盾正式成为“中国短视频与直播联盟”常务理事
- 可行性研究报告【列文】2022-5.6
- 【离散数学】搜集、并搜集、交搜集、求A = {{Φ, 2}, {2}}的并搜集和交搜集