如何检查字符串是否包含a到z的所有26个字符? 我正在尝试这个,但它没有给出解决方案,因为我想打印是的,如果字符串有所有26个字符,否则没有。
import java.util.Scanner;
class CompleteString {
static int MyFun(String s)
{
if(! s.matches(".*[^a-z].*") )
System.out.println("YES");
else
System.out.println("NO");
return 0 ;
}
public static void main(String args[] )
{
Scanner in = new Scanner(System.in);
int T = in.nextInt();
for(int i=0;i<=T;i++)
{
String s1 = in.nextLine();
int result = MyFun( s1);
System.out.println(result);
}
}
}
答案 0 :(得分:2)
如果你想确保字母表中的所有26个字母都出现在字符串中,而不仅仅是重复字母的某些组合,那么使用正则表达式似乎是一种不好的方法。通过字母表的简单循环将是我的方法。 e.g:
boolean containsWholeAlphabet(String input){
boolean matches = true;
for (char ch = 'a'; ch <= 'z'; ch++){
if (!input.toLowerCase().contains(String.valueOf(ch))){
matches = false;
}
}
return matches;
}
答案 1 :(得分:1)
你可以用两种方式做到这一点。
1)写一个正则表达式
(?=.*a)(?=.*b)(?=.*c)...(?=.*z).*
此正则表达式检查每个字母表中的一个匹配项。
2)为每个字符匹配写一个for循环。
for (char c = 'a'; c <= 'z'; c++) {
if (str.indexOf(c) == -1) {
return false;
}
}
答案 2 :(得分:0)
如果您只查找a-z字母,那么非常简单
char[] chars = "souRce".toCharArray();
for(char c : chars){
if(!(c >= 'a' && c <='z')){
// fail on first occurence itself to avoid remaining characters
System.out.println("source contains other letters");
break;
}
}