문자열에 영숫자가 아닌 문자가 있는지 확인하는 방법은 무엇입니까?
문자열에 영숫자가 아닌 문자가 있는지 알려주는 방법이 필요합니다.
예를 들어 문자열이 "abcdef?"인 경우 또는 "abcdefà"인 경우 메서드는 true를 반환해야합니다.
Apache Commons Lang 사용 :
!StringUtils.isAlphanumeric(String)
또는 String의 문자를 반복하고 다음을 확인하십시오.
!Character.isLetterOrDigit(char)
여전히 한 가지 문제가 남아 있습니다. 예제 문자열 "abcdefà"는 문자이므로 영숫자 à
입니다. 하지만 영숫자가 아닌 것으로 간주되기를 원한다고 생각합니다.
따라서 대신 정규식을 사용할 수 있습니다.
String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();
한 가지 방법은 String 클래스 자체를 사용하는 것입니다. 문자열이 다음과 같다고 가정 해 보겠습니다.
String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");
다른 하나는 Apache commons와 같은 외부 라이브러리를 사용하는 것입니다.
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
문자열의 각 문자를 살펴보고 확인 Character.isDigit(char);
하거나Character.isletter(char);
또는 정규식을 사용할 수 있습니다.
이 함수를 사용하여 문자열이 영숫자인지 확인합니다.
public boolean isAlphanumeric(String str)
{
char[] charArray = str.toCharArray();
for(char c:charArray)
{
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
외부 라이브러리를 가져올 필요가 없으며 나중에 문자열에 대해 다른 유효성 검사를 수행하려는 경우 코드를 쉽게 수정할 수 있습니다.
Apache Commons 라이브러리를 사용할 수 있다면 Commons-Lang StringUtils
에는 원하는 작업을 수행하는 메서드 isAlphanumeric()
가 있습니다.
string.matches("^\\W*$");
원하는대로해야하지만 공백은 포함되지 않습니다. string.matches("^(?:\\W|\\s)*$");
공백도 일치합니다.
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;
}
'Programing' 카테고리의 다른 글
Facebook API : 페이지를 좋아하는 사람 / 팬 확보 (0) | 2020.11.08 |
---|---|
Python unittest : 테스트 파일의 일부만 실행하는 방법은 무엇입니까? (0) | 2020.11.07 |
여러 주요 기능 (0) | 2020.11.07 |
데이터 손실없이 Entity Framework 5 Code First 마이그레이션에서 데이터베이스 열의 이름을 바꾸는 방법은 무엇입니까? (0) | 2020.11.07 |
Rails 4의 has_many 'conditions'옵션과 동일한 것은 무엇입니까? (0) | 2020.11.07 |