String.contains方法的不区分大小写替代方案是什么?

4

从文件中读取一行字符串,使用string.contains("someexamplestring")将返回区分大小写的字符串输出。

如果在该行中出现了"someExampleString",则不会返回结果。

如何以不区分大小写的方式识别字符串?


1
使用不区分大小写的正则表达式,例如 string.matches("(?i).*someexamplestring.*") - Thomas
关于所有建议使用 toLowerCase/toUpperCase 的答案,请注意如果超出 ASCII 空间。有些语言在大小写转换时不一致,土耳其语的无点“i”就是其中之一 https://en.wikipedia.org/wiki/Dotted_and_dotless_I - Artur Biesiadowski
6个回答

5
实际上,这是 如何在Java中检查一个字符串是否包含另一个不区分大小写的字符串? 的副本。
如果您的要求更简单,并且只涉及英文字母,请按照以下答案操作。您应该执行 string.toLowerCase().contains("someExampleString".toLowerCase());。更多关于从Java SE文档中读取public String toLowerCase()的信息。
此外,正如问题的评论部分中的Artur Biesiadowski所提示的那样,我在此重申:
关于所有建议使用toLowerCase/toUpperCase的答案-如果您走出ASCII空间,则需要小心。有些语言在转换为大写或小写字母并返回时(或相反),不是一致的。土耳其语的无点'i'就会出现:Dotted and dotless I 另外,为了使它更安全,您可以使用另一种方法来toLowerCase(Locale.English),并始终覆盖为英语环境。但是,局限性在于您不再具有国际化功能。
string.toLowerCase(Locale.English).contains("someExampleString".toLowerCase(Locale.English));

感谢 @Am_I_Helpful。 - Jagadeeswar

2
你可以使用正则表达式:
str.matches("(?i).*someexamplestring.*")

1

首先使用String.toLowerCase(str)方法处理您的输入字符串,然后再应用String.contains(str)方法。


1
为了实现不区分大小写的操作,我们需要将两个字符串转换为相同的格式,可以使用 toLowerCase'toUpperCase' 方法来帮助您进行包含操作。 toLowerCase 有两种变体。
somestring.toLowerCase();
somestring.toLowerCase(Locale somelocale)

例子
String case1 = "StackOverFlow";
String case2 = "STACKOverfloW";
bool isSame ;
isSame = case1.toLowerCase().Contains(case2.toLowerCase());

请注意,当你想比较两个字符串时,equalsIgnoreCase()会很有帮助。

请在点踩之前添加您有用的命令,这样我就可以知道正确的答案。这对学习很有帮助。 - Venkat

0
你可以使用 toLowerCase() 把你的字符串转化为小写,然后对匹配目标的小写版本执行 contains 方法。

0

你应该将两个字符串转换为小写或大写。然后进行操作。

    Str.toUpperCase().contains("someexamplestring".toUpperCase());

                              or

    Str.toLowerCase().contains("someexamplestring".toLowerCase());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接