检查一个字符串是否包含正确位置的子字符串

问题描述:

所以我的任务是检查一个电子邮件是否有特定的形式。它必须是[email protected],其中x可以是其他任何东西,但其余是必须的。检查一个字符串是否包含正确位置的子字符串

如果剩下的稍有不同,我必须打印该用户不被接受。我不知道该怎么做。我写了没有代码,因为我不知道如何解决这个问题。

+0

尝试使用正则表达式。 – Pein

+0

可能的重复[如何检查一个字符串是否包含另一个字符串在Java中不区分大小写的方式?](http://*.com/questions/86780/how-to-check-if-a-string-contains-另一个字符串不区分大小写in) –

+0

查看[String]的indexOf方法(http://docs.oracle.com/javase/7/docs/api/java/ lang/String.html)类。 –

您可以使用正则表达式。

符合您输入的模式是:^it\w*@uom.edu.gr。所述\w*装置

零个或多个任何字字符(字母,数字,下划线)的

如果要例如包括多个符号“”但排除了“@”原因很明显,你可以换着花样用[^@]*这意味着

零个或多个任何单个字符不包括“@”的。

因此模式变为:^it[^@]*@uom.edu.gr

使用任何两套西装的您的需求。

示例代码:

Pattern p = Pattern.compile("^it\\w*@uom.edu.gr"); 
Matcher m = p.matcher("[email protected]"); 
boolean b = m.matches(); 

以上可以按你一直要求扩大,如:

public static void main(String[] args)throws Exception{ 

    String email = "[email protected]"; 

    Pattern p = Pattern.compile("^it\\w*@uom.edu.gr"); 
    Matcher m = p.matcher(email); 
    boolean b = m.matches(); 
    if(b) { 
     System.out.println("Valid email"); 
    } else { 
     System.out.println("Invalid email."); 
    } 

} 
+1

这是该工作的正确解决方案。一个细节,严格来说'\ w *'不匹配“任何”,只有a-zA-Z_0-9。这可能已经足够好了,或者您可能希望接受更多的角色,具体取决于您对电子邮件地址的了解。 –

+0

@ OleV.V。你指出它是正确的,一个更好的模式将是:'^ it [^ @] * @ uom.edu.gr' – pleft

使用startsWith和的endsWith

String var = "[email protected]"; 
if(var.startsWith("it") && var.endsWith("end.com")){ 
    // your code 
} 
else { 
    // String do not start with it or it does not end end.com 
}