java - 检查String是否只包含字母
我们的想法是读取一个String并验证它是否包含任何数字字符。 所以像“smith23”这样的东西是不可接受的。
kodie hill asked 2019-06-23T14:08:28Z
12个解决方案
121 votes
你想要什么? 速度还是简单? 为了速度,请采用基于循环的方法。 为简单起见,请采用基于RegEx的单线程方法。
速度
public boolean isAlpha(String name) {
char[] chars = name.toCharArray();
for (char c : chars) {
if(!Character.isLetter(c)) {
return false;
}
}
return true;
}
简单
public boolean isAlpha(String name) {
return name.matches("[a-zA-Z]+");
}
adarshr answered 2019-06-23T14:08:55Z
52 votes
Java 8 lambda表达式。 既快又简单。
boolean allLetters = someString.chars().allMatch(Character::isLetter);
Max Malysh answered 2019-06-23T14:09:21Z
32 votes
或者,如果您使用的是Apache Commons,[StringUtils.isAlpha()]。
Robby Pond answered 2019-06-23T14:09:49Z
6 votes
我使用了这个正则表达式(".*[a-zA-Z]+.*").使用if not语句,它将避免所有在前面,末尾或任何类型的其他字符之间有字母的表达式。
String strWithLetters = "123AZ456";
if(! Pattern.matches(".*[a-zA-Z]+.*", str1))
return true;
else return false
iyas answered 2019-06-23T14:10:16Z
6 votes
一个快速的方法是:
public boolean isStringAlpha(String aString) {
int charCount = 0;
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (aString.length() == 0) {
return false; //zero length string ain't alpha
}
for (int i = 0; i < aString.length(); i++) {
for (int j = 0; j < alphabet.length(); j++) {
if (aString.substring(i, i + 1).equals(alphabet.substring(j, j + 1))
|| aString.substring(i, i + 1).equals(alphabet.substring(j, j + 1).toLowerCase())) {
charCount++;
}
}
if (charCount != (i + 1)) {
System.out.println("\n**Invalid input! Enter alpha values**\n");
return false;
}
}
return true;
}
因为您不必运行整个aString来检查它是否不是alpha字符串。
mark_infinite answered 2019-06-23T14:10:52Z
4 votes
更快捷的方式如下。 考虑字母只是a-z,A-Z。
public static void main( String[] args ){
System.out.println(bestWay("azAZpratiyushkumarsinghjdnfkjsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
System.out.println(isAlpha("azAZpratiyushkumarsinghjdnfkjsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
System.out.println(bestWay("azAZpratiyushkumarsinghjdnfkjsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
System.out.println(isAlpha("azAZpratiyushkumarsinghjdnfkjsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
}
public static boolean bettertWay(String name) {
char[] chars = name.toCharArray();
long startTimeOne = System.nanoTime();
for(char c : chars){
if(!(c>=65 && c<=90)&&!(c>=97 && c<=122) ){
System.out.println(System.nanoTime() - startTimeOne);
return false;
}
}
System.out.println(System.nanoTime() - startTimeOne);
return true;
}
public static boolean isAlpha(String name) {
char[] chars = name.toCharArray();
long startTimeOne = System.nanoTime();
for (char c : chars) {
if(!Character.isLetter(c)) {
System.out.println(System.nanoTime() - startTimeOne);
return false;
}
}
System.out.println(System.nanoTime() - startTimeOne);
return true;
}
运行时间以纳秒计算。 它可能会因系统而异。
5748//bettertWay without numbers
true
89493 //isAlpha without numbers
true
3284 //bettertWay with numbers
false
22989 //isAlpha with numbers
false
Pratiyush Kumar Singh answered 2019-06-23T14:11:27Z
4 votes
检查一下,我想这对你有帮助,因为它在我的项目中有效,所以一旦你检查了这段代码
if(! Pattern.matches(".*[a-zA-Z]+.*[a-zA-Z]", str1))
{
String not contain only character;
}
else
{
String contain only character;
}
Pravin Suthar answered 2019-06-23T14:11:56Z
4 votes
首次进口模式:
import java.util.regex.Pattern;
然后使用这个简单的代码:
String s = "smith23";
if (Pattern.matches("[a-zA-Z]+",s)) {
// Do something
System.out.println("Yes, string contains letters only");
}else{
System.out.println("Nope, Other characters detected");
}
这将输出:
不,检测到其他字符
shalamus answered 2019-06-23T14:12:43Z
3 votes
private boolean isOnlyLetters(String s){
char c=' ';
boolean isGood=false, safe=isGood;
int failCount=0;
for(int i=0;i
c = s.charAt(i);
if(Character.isLetter(c))
isGood=true;
else{
isGood=false;
failCount+=1;
}
}
if(failCount==0 && s.length()>0)
safe=true;
else
safe=false;
return safe;
}
我知道它有点拥挤。 我正在使用它与我的程序,并感到与人分享它的愿望。 它可以判断字符串中的任何字符是否不是字母。 如果你想要一些易于澄清和回顾的东西,请使用它。
LifesAway answered 2019-06-23T14:13:12Z
3 votes
String expression = "^[a-zA-Z]*$";
CharSequence inputStr = str;
Pattern pattern = Pattern.compile(expression);
Matcher matcher = pattern.matcher(inputStr);
if(matcher.matches())
{
//if pattern matches
}
else
{
//if pattern does not matches
}
user3717716 answered 2019-06-23T14:13:30Z
3 votes
尝试使用正则表达式:String.matches
Brent Worden answered 2019-06-23T14:14:01Z
1 votes
public boolean isAlpha(String name)
{
String s=name.toLowerCase();
for(int i=0; i
{
if((s.charAt(i)>='a' && s.charAt(i)<='z'))
{
continue;
}
else
{
return false;
}
}
return true;
}
Surender Singh answered 2019-06-23T14:14:23Z