2017-09-20 148 views
1

我有用户输入他们的名字。但我需要做到这一点,所以不允许使用数字或特殊字符。也许某种如果声明说 如果它包含除字母之外的其他内容,请再次尝试其他代码。我不想使用正则表达式,因为我们在课堂上没有理解它。Java-我如何只允许不使用正则表达式的字母字符

+1

你对输入有什么代码?你是逐字读字还是阅读整行?这将帮助我形成我的答案 – Tyler

+1

'java.lang.Character.isLetter(char ch)'? –

+0

用户如何输入他的名字?也许你可以限制只用于输入字母的键... – deHaar

回答

0

您可以设置一个字符串不允许的字符,测试输入的每个字母对这样的模式:

public boolean checkAlphabetic(String aString){ 
    boolean rtn = true; 
    String allowed="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "; 

    for(int i=0; i<aString.length(); i++){ 
     String nextLetter = aString.substring(i,i+1); 
     if(!allowed.contains(nextLetter){ 
      rtn = false; 
      break; 
     }     
    } 
    return rtn; 
} 
+0

这是一个可怕的答案,不要使用这个。 – DwB

+0

@DwB它可能不是最佳的,但我不认为它是可怕的:) – Juan

+0

@DwB使用您的投票! –

1

使用Java 8中,可以从利用String::codePointsCharacter::isAlphabetic一起受益。

String input = "Aominè"; // example input 
if(input.codePoints().allMatch(Character::isAlphabetic)){ 
    System.out.println("all alphabets"); 
}else{ 
    System.out.println("NOT all alphabets"); 
} 
  • 您还可以利用input.chars().allMatch(...)使用适当的参数。看看Character类为不同的方式来完成相同的结果。
  • 另一种选择是循环查看源字符串的字符,并利用方法检查特定字符是否为字母。
相关问题