检查字符串java中是不是存在一段字符串[重复]

Posted

技术标签:

【中文标题】检查字符串java中是不是存在一段字符串[重复]【英文标题】:Check if piece of String is there in string java [duplicate]检查字符串java中是否存在一段字符串[重复] 【发布时间】:2013-07-23 00:27:12 【问题描述】:

我正在寻找一段可以在字符串中搜索字符串的代码。

String mainSTR = "It is Wednesday";

所以我需要一个在搜索时返回 true 的代码

"Day""day""DAY"mainSTR

我尝试过类似的方法

mainSTR.contains("")

mainSTR.IndexOf("") > -1

不适合我

谢谢:)

【问题讨论】:

你要检查Day,那你为什么要在contains中传递空字符串? 您是只查找“Day”、“day”和“DAY”,还是可以接受“dAY”和“Day”之类的内容? 谢谢,但对我不起作用我尝试了我提到的那些方法 @loveeSindh:用contains() 显示您的实际代码,这不起作用。如果您按照所有答案中发布的方式进行操作,它将起作用。您可以使用问题下方的edit 按钮。 @loveeSindh 请不要再说“不工作”,而是尝试确切地解释它是如何失败的。 【参考方案1】:

不能指望 android 开发人员会提出这样的问题。无论如何,要在字符串中查找任何单词,您可以使用 Java 方法

String mainSTR = "It is Wednesday";
String findThis = "DaY";

if(mainSTR.toLowerCase().contains(findThis.toLowerCase()))

   System.out.println("true: Day found");

else
   System.out.println("false: Day not found");

【讨论】:

我同意,但包含不起作用。我尝试了很多次它不起作用,这就是为什么我要求这个无论如何谢谢,但它没有帮助.. 你能展示这段代码片段不起作用的实际代码吗?【参考方案2】:

如果mainSTR 是一个很长的字符串,这种方法可能更有效:

String mainSTR = "It is Wednesday";
String toSearch = "Day";
boolean found = Pattern.compile(toSearch, Pattern.CASE_INSENSITIVE).matcher(mainSTR).find();

最后一行相当于

boolean found = Pattern.compile("(?i)" + toSearch).matcher(mainSTR).find();

但请注意,如果您这样做,toSearch 可能不包含正则表达式元字符。

【讨论】:

如果 mainSTR = "+91111111189"; toSearch = "89" 在这种情况下它仍然可以工作,因为我在使用此代码时遇到了错误。 @loveeSindh:它可以毫无问题地工作(甚至可以确定)。你遇到了什么错误?? 但你警告我关于 toSearch。所以即使 mainSTR 也不能包含正则表达式元字符。所以有什么办法可以忽略它? @loveeSindh:不,toSearch 不能包含正则表达式元字符,mainSTR 可以。为避免这种情况,您可以使用Pattern.quote(),但它不再区分大小写。 (我编辑了我之前的评论)。 好的,现在它没有出现任何类型的错误,但是如果我在 mainSTR 中有数字,就像我在第一条评论中提到的那样,它现在可以正常工作。找到的仍然是假的。【参考方案3】:

请尝试以下操作:

mainSTR.toUpperCase().contains(day.toUpperCase());

干杯!!

【讨论】:

【参考方案4】:

您可以在这里使用一种方法 - 规范化功能。 toLowerCase(或 toUpperCase)就是这样的助手之一。

mainSTR.toLowerCase().contains("day");

【讨论】:

【参考方案5】:

看看这个

   String mainStr="It is Wednesday";
   System.out.println(mainStr.toLowerCase().contains("wed".toLowerCase()));

【讨论】:

【参考方案6】:
String days = "day";//or "Day" or "DAY"
mainSTR.toLowerCase().contains(days.toLowerCase());

Ps:对于这样的比较,你应该更喜欢 toLowerCase(Locale.ENGLISH)toUpperCase(Locale.ENGLISH) 给你locale insensitive字符串。

here 是 javaDoc 不得不说的。

注意:此方法对区域设置敏感,可能会产生意想不到的结果 如果用于旨在解释语言环境的字符串,则结果 独立。示例是编程语言标识符、协议 键和 html 标签。例如,土耳其语中的 "TITLE".toLowerCase() 语言环境返回“t?tle”,在哪里 '?'是拉丁文小写字母 DOTLESS I 特点。要获得不区分区域设置的字符串的正确结果, 使用 toLowerCase(Locale.ENGLISH)。

【讨论】:

JavaDoc 说 toLowerCase() 使用默认语言环境,与 toUpperCase() 相同。你能提供你所说的话的来源吗? @jlordo javapapers.com/core-java/… @ay89:它说“它根据您的区域设置执行大小写转换”,这是真的。但是toUpperCase() 做同样的事情,所以没有区别。 (P.S. 我不是反对者) @jlordo 也再次阅读了文档,描述中还有更多内容。 @ay89:是的,它在toUpperCase() 的文档中也说了同样的话。所以没有更好的,两者都是一样的。【参考方案7】:
mainSTR.toUpperCase().contains("day".toUpperCase());

【讨论】:

以上是关于检查字符串java中是不是存在一段字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Perl 中使用 grep 检查字符串是不是存在 [重复]

Python3检查Unicode字符是不是不存在[重复]

寻找一种优雅的方法来检查字典中是不是存在密钥[重复]

Java将一段逗号分割的字符串转换成一个数组

使用基本Java检查两个字符串是不是是彼此的字谜[重复]

如何检查字符串是不是匹配某种日期格式?? JAVA [重复]