Идея состоит в том, чтобы прочитать строку и убедиться, что она не содержит числовых символов. Так что что-то вроде "smith23" было бы неприемлемым.
Проверьте, содержит ли строка только буквы
Ответ 1
Чего вы хотите? Скорость или простота? Для скорости используйте метод, основанный на петле. Для простоты перейдите на один подход, основанный на использовании линейки RegEx.
Speed
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]+");
}
Ответ 2
Ява-выражения Java 8. Оба быстро и просто.
boolean allLetters = someString.chars().allMatch(Character::isLetter);
Ответ 3
Или, если вы используете Apache Commons, [StringUtils.isAlpha()].
Ответ 4
Я использовал это выражение регулярного выражения (".*[a-zA-Z]+.*")
. С помощью оператора if not
он будет избегать всех выражений, которые имеют букву раньше, в конце или между любыми другими символами.
String strWithLetters = "123AZ456";
if(! Pattern.matches(".*[a-zA-Z]+.*", str1))
return true;
else return false
Ответ 5
A быстрый способ сделать это:
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
, чтобы проверить, не является ли это альфа-строка.
Ответ 6
Ниже приведен более быстрый способ. Учитывая, что буквы являются только 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
Ответ 7
Попробуйте использовать регулярные выражения: String.matches
Ответ 8
private boolean isOnlyLetters(String s){
char c=' ';
boolean isGood=false, safe=isGood;
int failCount=0;
for(int i=0;i<s.length();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;
}
Я знаю, что это немного переполнено. Я использовал его с моей программой и почувствовал желание поделиться им с людьми. Он может определить, не является ли какой-либо символ в строке буквой или нет. Используйте его, если вы хотите что-то легко прояснить и оглянуться назад.
Ответ 9
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
}
Ответ 10
Проверьте это, я думаю, это поможет вам, потому что он работает в моем проекте, поэтому, как только вы проверите этот код
if(! Pattern.matches(".*[a-zA-Z]+.*[a-zA-Z]", str1))
{
String not contain only character;
}
else
{
String contain only character;
}
Ответ 11
public boolean isAlpha(String name)
{
String s=name.toLowerCase();
for(int i=0; i<s.length();i++)
{
if((s.charAt(i)>='a' && s.charAt(i)<='z'))
{
continue;
}
else
{
return false;
}
}
return true;
}