【问题标题】:How can i check a string whether it contains letters of a given word by user如何检查字符串是否包含用户给定单词的字母
【发布时间】:2016-02-23 13:04:55
【问题描述】:

如何检查字符串是否包含用户喜欢的给定单词的字母

Enter the pattern string: shl

Enter a string: school

shl occurs in ”school”

Enter a string: okul

shl does NOT occur in ”okul”

Enter a string: salaries are neither high nor low

shl occurs in ”salaries are neither high nor low”

Enter a string: This is a good school, isn’t it? 

shl occurs in ”This is a good school, isn’t it?”

Enter a string: I love programming 

shl does NOT occur in ”I love programming”





if (occursIn(pattern,str)){

                System.out.println(pattern + " occurs in " + str);
            }
            else{
                System.out.println(pattern + " does not occurs in " + str);
            }

public static boolean occursIn(String pattern, String str){

for(int i=0;pattern.charAt(i)<=str.length();i++){

        if(str.contains(pattern.charAt(i))){
            return true;
    }
        else {
            return false;
    }
}

}

它在方法中不起作用。我尝试了 5 个小时,请帮助我!!

我无法比较所有字母并将它们返回给 main 方法

【问题讨论】:

  • 自己尝试,如果无法解决,请发布您的尝试,然后我们可以帮助您。

标签: java string letter contain


【解决方案1】:

请检查以下代码(我已经测试过):

public class OccursIn {
    public static void main(String[] args) {
        String pattern = "s*h*l";
        String str = "love hss";
        if (occursIn(pattern, str)) {
            System.out.println(pattern + " occurs in " + str);
        } else {
            System.out.println(pattern + " does not occurs in " + str);
        }
    }

    public static boolean occursIn(String pattern, String str) {
        for (int i = 0; i < pattern.length(); i++) {
            String c = pattern.substring(i, i + 1);
            if (!"*".equalsIgnoreCase(c) && !str.contains(c)) {
                return false;
            }
        }
        return true;
    }
}

输出:

s*h*l occurs in love hss

【讨论】:

  • 非常感谢您的帮助。我想再问你一个问题,如果模式除了任何其他字符之外还包括诸如“*”之类的通配符。通配符的每次出现都代表一个任意字符的序列。代码是什么样的?
  • shl 出现在 love ssh 中也 shl 出现在 love ssh 我只想忽略“*”号
  • 你在吗?我只想添加“ *(star) ”字符作为通配符。我的意思是 * 出现在每个字符上。 shl 也应该出现在 love ssh 中。这是我想知道它是如何工作的最后一个想法。感谢您的帮助。
  • 我把所有信息发送给你写这段代码。
  • 2.编写一个向用户请求模式字符串的程序。除了任何其他字符之外,该模式还包括通配符“*”。通配符的每次出现都代表一个任意字符的序列。获取模式后,程序不断要求用户输入一个字符串,并使用方法public static booleanoccurrenceIn(String pattern, String str)检查该模式是否出现在字符串中。当用户输入“exit”时程序将退出。
【解决方案2】:

你回来得太早了。顺便说一句,有更简洁的方法可以做到这一点,但我只是在调整你的代码示例。

public static boolean occursIn(String pattern, String str){
    boolean allLettersFound = true;

    for(int i=0;pattern.charAt(i)<=str.length();i++){
        if(!str.contains(pattern.charAt(i))){
            allLettersFound = false;
            break;
        }
    }
    return allLettersFound;
}

【讨论】:

  • 它仍然给我关于 for 循环中“包含”字的错误。 "String 类型中的方法 contains(CharSequence) 不适用于 arguments(char)"
  • 试试@Tsung-Ting Kuo 的解决方案。他说他测试过了,我刚刚解决了提前退货问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2014-01-25
  • 2013-12-23
相关资源
最近更新 更多