java string 字母_java - 检查String是否只包含字母

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值