【问题标题】:Check if a string contains a letter that's input from console检查字符串是否包含从控制台输入的字母
【发布时间】:2015-04-24 09:56:18
【问题描述】:

我有一个包含一个单词的字符串。 我有另一个字符串,其中包含从输入流传递的字母。

当输入一个字母时,我想看看它是否与存储在包含单词的字符串中的任何字母匹配。

我看过 .indexOf() 但这会返回一个整数。我还查看了 contains(),但不幸的是,此方法检查整个字符串是否与给定字符串匹配。

有没有一种方法可以查看一个字母是否与单词中的任何一个字母匹配?

谢谢。

【问题讨论】:

  • “我也查看了 contains(),但不幸的是,此方法检查整个字符串是否与给定字符串匹配。” 不,它检查给定字符串是否有另一个字符串,如果它们相同,则不是(即equals)。这绝对是您想要的方法。 stringToCheck.contains(letter).
  • 如果 string1 有“hello”,而 string2 存储来自用户的一封信,则它不起作用,因为两者都不一样。
  • 那么您没有使用contains,或者您正在比较相反的方式(字母中的字符串)。在上面的评论中检查我的代码。 contains 绝对可以满足您的要求。
  • 我觉得自己很愚蠢。感谢您发现这一点!
  • 发生在所有人身上,很高兴能提供帮助。

标签: java regex string


【解决方案1】:

您可以手动操作 -

for(int i=0; i<str.length()-1; i++){
   if(str.charAt(i)==charYouInput){
     //do something eg- return the position of the index 

   }
}  

或者你可以像这样使用contains() 方法 -

str.contains("c");  

假设您正在搜索char'c'。你可以像字符串一样使用它——“c”。

【讨论】:

    【解决方案2】:

    假设您对 indexOf(String str) 的唯一问题是它返回一个整数,而不是布尔值,请注意,根据 Javadoc,如果未找到该字符串,则返回一个 -1

    因此,您的代码应该适用于indexOf。您需要做的就是检查indexOf 方法调用的结果是否产生-1(意味着子字符串不在您的原始字符串中)。

    String sourceString = "This is a source string";
    String toFind = "i";
    boolean exists = sourceString.indexOf(toFind) == -1;
    

    seemcontains 方法在内部使用了indexOf 方法,这似乎也与您的陈述相矛盾。因此,根据@m0skit0 的评论,您应该使用contains(String substring) 方法。

    【讨论】:

    • 为什么不直接使用contains?少一个比较。
    • @m0skit0:我误解了OP的问题,不得不在推荐之前尝试找到contains方法的来源,但你说的是正确的。
    猜你喜欢
    • 2015-01-04
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2014-07-16
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多