Check if String contains only letters

JavaString

Java Problem Overview


The idea is to have a String read and to verify that it does not contain any numeric characters. So something like "smith23" would not be acceptable.

Java Solutions


Solution 1 - Java

What do you want? Speed or simplicity? For speed, go for a loop based approach. For simplicity, go for a one liner RegEx based approach.

Speed

public boolean isAlpha(String name) {
	char[] chars = name.toCharArray();
			
	for (char c : chars) {
		if(!Character.isLetter(c)) {
			return false;
		}
	}

	return true;
}

Simplicity

public boolean isAlpha(String name) {
    return name.matches("[a-zA-Z]+");
}

Solution 2 - Java

Java 8 lambda expressions. Both fast and simple.

boolean allLetters = someString.chars().allMatch(Character::isLetter);

Solution 3 - Java

Or if you are using Apache Commons, [StringUtils.isAlpha()].

Solution 4 - Java

First import Pattern :

import java.util.regex.Pattern;

Then use this simple code:

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");    
}

This will output:

> Nope, Other characters detected

Solution 5 - Java

I used this regex expression (".*[a-zA-Z]+.*"). With if not statement it will avoid all expressions that have a letter before, at the end or between any type of other character.

String strWithLetters = "123AZ456";
if(! Pattern.matches(".*[a-zA-Z]+.*", str1))
 return true;
else return false

Solution 6 - Java

A quick way to do it is by:

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;
}

Because you don't have to run the whole aString to check if it isn't an alpha String.

Solution 7 - Java

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;
}

I know it's a bit crowded. I was using it with my program and felt the desire to share it with people. It can tell if any character in a string is not a letter or not. Use it if you want something easy to clarify and look back on.

Solution 8 - Java

Faster way is below. Considering letters are only 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;
    }

Runtime is calculated in nano seconds. It may vary system to system.

5748//bettertWay without numbers
true
89493 //isAlpha without  numbers
true
3284 //bettertWay with numbers
false
22989 //isAlpha with numbers
false

Solution 9 - Java

Check this,i guess this is help you because it's work in my project so once you check this code

if(! Pattern.matches(".*[a-zA-Z]+.*[a-zA-Z]", str1))
 {
   String not contain only character;
 }
else 
{
  String contain only character;
}

Solution 10 - Java

Try using regular expressions: String.matches

Solution 11 - Java

        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
        }

Solution 12 - Java

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;
}

Solution 13 - Java

Feels as if our need is to find whether the character are only alphabets. Here's how you can solve it-

Character.isAlphabetic(c) 

helps to check if the characters of the string are alphabets or not. where c is

char c = s.charAt(elementIndex);

Solution 14 - Java

While there are many ways to skin this cat, I prefer to wrap such code into reusable extension methods that make it trivial to do going forward. When using extension methods, you can also avoid RegEx as it is slower than a direct character check. I like using the extensions in the Extensions.cs NuGet package. It makes this check as simple as:

  1. Add the https://www.nuget.org/packages/Extensions.cs package to your project.
  2. Add "using Extensions;" to the top of your code.
  3. "smith23".IsAlphabetic() will return False whereas "john smith".IsAlphabetic() will return True. By default the .IsAlphabetic() method ignores spaces, but it can also be overridden such that "john smith".IsAlphabetic(false) will return False since the space is not considered part of the alphabet.
  4. Every other check in the rest of the code is simply MyString.IsAlphabetic().

Solution 15 - Java

To allow only ASCII letters, the character class \p{Alpha} can be used. (This is equivalent to [\p{Lower}\p{Upper}] or [a-zA-Z].)

boolean allLettersASCII = str.matches("\\p{Alpha}*");

For allowing all Unicode letters, use the character class \p{L} (or equivalently, \p{IsL}).

boolean allLettersUnicode = str.matches("\\p{L}*");

See the Pattern documentation.

Solution 16 - Java

I found an easy of way of checking a string whether all its digit is letter or not.

public static boolean isStringLetter(String input) {

	boolean b = false;
	for (int id = 0; id < input.length(); id++) {
		if ('a' <= input.charAt(id) && input.charAt(id) <= 'z') {
			b = true;
		} else if ('A' <= input.charAt(id) && input.charAt(id) <= 'Z') {
			b = true;
		} else {
			b = false;
		}
	}
	return b;
}

I hope it could help anyone who is looking for such method.

Solution 17 - Java

Use StringUtils.isAlpha() method and it will make your life simple.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionkodie hillView Question on Stackoverflow
Solution 1 - JavaadarshrView Answer on Stackoverflow
Solution 2 - JavaMax MalyshView Answer on Stackoverflow
Solution 3 - JavaRobby PondView Answer on Stackoverflow
Solution 4 - JavashalamusView Answer on Stackoverflow
Solution 5 - JavaiyasView Answer on Stackoverflow
Solution 6 - Javamark_infiniteView Answer on Stackoverflow
Solution 7 - JavaLifesAwayView Answer on Stackoverflow
Solution 8 - JavaPratiyush Kumar SinghView Answer on Stackoverflow
Solution 9 - JavaPravin SutharView Answer on Stackoverflow
Solution 10 - JavaBrent WordenView Answer on Stackoverflow
Solution 11 - Javauser3717716View Answer on Stackoverflow
Solution 12 - JavaSurender SinghView Answer on Stackoverflow
Solution 13 - JavaAnvita ShuklaView Answer on Stackoverflow
Solution 14 - JavaCornelius J. van DykView Answer on Stackoverflow
Solution 15 - JavaUnmitigatedView Answer on Stackoverflow
Solution 16 - JavaHizbullah WatandostView Answer on Stackoverflow
Solution 17 - JavaShyadavView Answer on Stackoverflow