[英]How to check if a string contains only letters?
如何检查字符串是否只包含字母? 是否有任何特定功能可以做到这一点?
我不知道直接 function 但是您可以按照以下步骤操作:
1) 将字符串作为输入 2) 使用toLower()
方法,将所有内容转换为小写 3) 使用 String class 的toCharArray()
方法转换为字符数组 4) 现在检查每个位置是否有字符之间的字符到 z
代码:
import java.util.Scanner;
public class StringValidation{
public boolean validtaeString(String str) {
str = str.toLowerCase();
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char ch = charArray[i];
if (!(ch >= 'a' && ch <= 'z')) {
return false;
}
}
return true;
}
public static void main(String args[]) {
Scanner sc= new Scanner(System.in);
System.out.println("Enter a string value: ");
String str = sc.next();
StringValidation obj = new StringValidation();
boolean bool = obj.validtaeString(str);
if(!bool) {
System.out.println("Given String is invalid");
}else{
System.out.println("Given String is valid");
}
}
}
这是 output:
Output:
Enter a string value:
24stackoverflow
Given String is invalid
------------------------
Enter a string value:
StackOverflow
Given String is valid
如果您只关心简单的英文无重音字母,则可以使用正则表达式来测试字符串是否与模式/^[az]+$/i
匹配。
对于多种语言的字母,您可以使用/^\p{L}+$/i
。
作为 Java 正则表达式,这些看起来像:
Pattern.compile("^[az]+$", Pattern.CASE_INSENSITIVE)
Pattern.compile("^\\p{L}+$")
更新:对于重音字符,{L} 比 {Alpha} 效果更好。
pattern = Pattern.compile("^\\p{L}+$");
System.out.println(pattern.matcher("foo").matches());
System.out.println(pattern.matcher("Foo").matches());
System.out.println(pattern.matcher("föo").matches());
System.out.println(pattern.matcher("fo-oo").matches());
我看到了答案,我想添加另一个解决方案,我更喜欢这个解决方案,因为它更个性化。
class Character 有方法,like.isLetter()。 您还可以查看java 文档
我有一个这样的代码示例:
public class CheckLetterInTheString {
public static boolean isOnlyLetter(String string){
if(string == null || string.isEmpty()){
throw new IllegalArgumentException("String not valid");
}
char[] chatString = string.toCharArray();
for(Character character : chatString){
if(!Character.isLetter(character) && !Character.isSpaceChar(character)){
return false;
}
}
return true;
}
}
现在你可以打电话了
System.out.println(CheckLetterInTheString.isOnlyLetter("String only letter")); //true
System.out.println(CheckLetterInTheString.isOnlyLetter("Contains num 12")); //false
PS:我喜欢这个解决方案,因为它更具个性化,而且我认为它比正则表达式更具可读性。 但这只是我的意见
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.