如何在主字符串中查找子字符串,并搜索子字符串中是否存在子字符串的所有元素

时间:2016-07-06 09:17:19

标签: java string

我编写了第一部分,如何使用更少的代码完成第二部分?哪个搜索子字符串的所有元素是否都存在于主字符串中?

public static void main(String[] args) 
{
    Scanner getString = new Scanner(System.in);
    System.out.println("provide the main string: \n");

    try {
        String str1 = getString.nextLine();
        System.out.println("provide the sub string: \n");
        String str2 = getString.nextLine();
        if (str1.toLowerCase().contains(str2.toLowerCase())) 
        {
            System.out.println("It is a substring");
        } else 
        {
            System.out.println("It is not a substring");
        } 
    } 
        finally 
        {
            getString.close();
        }

}

2 个答案:

答案 0 :(得分:0)

您可以使用indexOf()类的java.lang.String方法检查子字符串中的每个字符是否都存在于主字符串中。

逻辑:初始化计数变量n。现在,遍历for循环中子字符串的每个字符。使用 indexOf()函数检查每个字符是否存在于主字符串中。如果存在,则将 n 的值增加1.在循环外,检查n ==子字符串的长度。如果n ==子字符串的长度,那么主字符串中存在子字符串的所有元素。

请考虑以下代码。

String main_str <--- MAIN STRING
String sub_str <--- SUB STRING
int n=0;
for(int i=0; i<sub_str.length();i++){        
    if(main_str.indexOf(sub_str.charAt(i))!=-1) 
    n++;
}
if(n==sub_str.length()) 
System.out.println("All elements of sub string EXIST in the main string");
else
System.out.println("All elements of sub string DO NOT EXIST in the main string");

希望这可以帮助你。

答案 1 :(得分:0)

contains()函数是否已经这样做了?我的意思是,如果您使用contains()函数,那么str2的所有字符(元素)都将与str1中的所有字符一起检查,如果str2中的所有字符都存在于str1中{1}}然后只有contains()函数才会返回true。所以第二种情况由contains()函数隐式处理。

如果我错了,请纠正我。