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);

}

}

}

}

### 回答1: 要判断一个字符串是否包含某一个字符并忽略大小写,你可以使用 Java 8 中的 `contains()` 方法和 `toLowerCase()` 方法。具体来说,你可以使用以下代码: ```java String str = "This is a Sample String"; char ch = 's'; if (str.toLowerCase().contains(String.valueOf(ch).toLowerCase())) { System.out.println("字符串包含该字符"); } else { System.out.println("字符串不包含该字符"); } ``` 在上面的代码中,我们首先使用 `toLowerCase()` 方法将字符串中的所有字符转换为小写字母,然后使用 `contains()` 方法判断是否包含指定字符。由于我们已经将字符串和字符都转换为小写字母,所以在判断是否包含字符时会忽略大小写。 ### 回答2: 在Java 8中,我们可以使用字符串的`contains()`方法和正则表达式来判断一个字符串是否包含某一个字符,同时忽略大小写。 首先,我们可以使用`Pattern.CASE_INSENSITIVE`参数来创建一个忽略大小写的正则表达式模式。然后,使用`Matcher`类的`find()`方法来查找整个字符串中是否存在与正则表达式匹配的字符。 下面是一个示例代码: ```java import java.util.regex.Pattern; import java.util.regex.Matcher; public class IgnoreCaseExample { public static void main(String[] args) { String str = "Hello World"; // 创建忽略大小写的正则表达式模式 Pattern pattern = Pattern.compile("a", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(str); // 使用find()方法查找字符串是否包含某一个字符,忽略大小写 if (matcher.find()) { System.out.println("字符串中包含字符a"); } else { System.out.println("字符串中不包含字符a"); } } } ``` 这段代码中,我们创建了一个字符串`str`,并且使用`Pattern.compile()`方法创建了一个忽略大小写的正则表达式模式。然后,我们使用`Pattern.matcher()`方法创建了一个匹配器`matcher`,并在字符串`str`中查找是否存在与正则表达式匹配的字符。最后,通过使用`Matcher.find()`方法判断字符串中是否包含字符`a`,并相应地打印输出结果。 在这个示例中,由于字符串`"Hello World"`中包含字符`o`,所以输出结果是`字符串中包含字符a`。 综上所述,我们可以通过使用正则表达式和`Matcher`类的方法,来判断一个字符串是否包含某一个字符,并且可以忽略大小写。 ### 回答3: 在Java 8中,要判断一个字符串是否包含某个字符并忽略大小写,可以使用字符串的`contains()`方法和`toLowerCase()`方法。 首先,将需要判断的字符串调用`toLowerCase()`方法转换为小写。然后,使用`contains()`方法来判断转换后的字符串是否包含目标字符。最后,根据`contains()`方法的返回结果来得出判断。 以下是一个示例代码: ```java public static boolean isContainsIgnoreCase(String str, char targetChar) { String lowercaseStr = str.toLowerCase(); String targetString = Character.toString(targetChar).toLowerCase(); return lowercaseStr.contains(targetString); } ``` 在上述代码中,`isContainsIgnoreCase()`方法接受两个参数:一个是需要判断的字符串`str`,另一个是目标字符`targetChar`。首先,使用`toLowerCase()`方法将`str`转换为小写形式并赋值给`lowercaseStr`。然后,将`targetChar`转换为字符串形式,并使用`toLowerCase()`方法将其转换为小写形式并赋值给`targetString`。接着,通过`contains()`方法判断`lowercaseStr`是否包含`targetString`,并将结果返回。 使用这个方法,可以判断一个字符串是否包含某个字符,而且不区分字符的大小写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值