我编写了第一部分,如何使用更少的代码完成第二部分?哪个搜索子字符串的所有元素是否都存在于主字符串中?
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();
}
}
答案 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()
函数隐式处理。
如果我错了,请纠正我。