2011-11-23 5 views
54

문자열에 영숫자가 아닌 문자가 있는지 알려줄 수있는 메서드가 필요합니다.문자열에 영숫자가 아닌 문자가 있는지 확인하는 방법은 무엇입니까?

예를 들어 문자열이 "abcdef?"인 경우 또는 "abcdefà"이면 메서드는 true를 반환해야합니다.

+1

http://stackoverflow.com/questions/1795402/java-check-a-string-if-there-is-a-special-character-in-it –

+0

http://stackoverflow.com/questions/11241690/regex-for-a-string-is-strict-alphanumeric – treecoder

답변

115

귀하의 예를 들어 문자열을 숫자이다 "abcdefà" à는 편지이기 때문에. 하지만 비영리 문자로 간주되기를 원합니다. 맞죠?

그래서 대신 정규 표현식을 사용할 수 있습니다 :

String s = "abcdefà"; 
Pattern p = Pattern.compile("[^a-zA-Z0-9]"); 
boolean hasSpecialChar = p.matcher(s).find(); 
+5

엄격히 필요하지 않으면 외부 라이브러리 가져 오기를 피하고 싶습니다. 예 : à 영숫자가 아닌 것으로 간주됩니다. – lugeno

4

당신은 문자열의 각 문자를 통해 이동 Character.isDigit(char); 또는 Character.isletter(char);

는 다른 방법으로, 정규식을 사용할 수 있습니다 확인해야합니다.

+1

예를 들어 "-1234"는 숫자이며 영숫자 문자열이 아닙니다. 그러나 논리 Character.isDigit는 "-"에 대해 false를 반환합니다. : – Abhishek

1

Apache Commons 라이브러리를 사용할 수 있다면 Commons-Lang StringUtils에는 찾고있는 것을 수행하는 isAlphanumeric()이라는 메서드가 있습니다.

!StringUtils.isAlphanumeric(String) 

Alternativly이 문자열의 문자를 반복하고 확인 :

!Character.isLetterOrDigit(char) 

당신은 아직 한 가지 문제가 남아했습니다 아파치 코 몬즈 랭를 사용

21

한 가지 방법은 String 클래스 자체를 사용하여 그렇게하는 것입니다.

String s = "some text"; 
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$"); 

다른 하나의 아파치 평민 같은 외부 라이브러리를 사용하는 것입니다 : : 의 당신의 캐릭터가 같은 것입니다 가정 해 봅시다

String s = "some text"; 
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s); 
+0

+1 : OP가 실제로 확인하고 싶지 않기 때문에 정규 표현식이 여기에 있습니다. 특수 문자 "hasSpecialCharacters (String)"와 같이 sth을 원합니다 –

+2

Java에서 String.matches (...)는 정규 표현식이 * 전체 문자열. – ruakh

+1

당신이 옳습니다. 나는 정규 표현식을 수정했다. – loscuropresagio

1

string.matches("^\\W*$"); 당신이 원하는 일을해야한다, 그러나 그렇지 않습니다 공백을 포함하십시오. string.matches("^(?:\\W|\\s)*$");도 공백과 일치합니다.

0

Java.lang에서 Character 클래스의 정적 메서드 isLetter (char c)를 사용할 수 있습니다. 문자열이 숫자 인 경우

public boolean isAlpha(String s) { 
    char[] charArr = s.toCharArray(); 

    for(char c : charArr) { 
     if(!Character.isLetter(c)) { 
      return false; 
     } 
    } 
    return true; 
} 
1

이 기능을 사용 확인 :

public boolean isAlphanumeric(String str) 
{ 
    char[] charArray = str.toCharArray(); 
    for(char c:charArray) 
    { 
     if (!Character.isLetterOrDigit(c)) 
      return false; 
    } 
    return true; 
} 

그것은 외부 라이브러리를 가져올 필요가 저장하고 코드가 쉽게 나중에 문자열에 다른 유효성 검사를 수행하고자한다 수정할 수 있습니다 .

관련 문제