Java, 문자열에 영숫자, 공간 및 대시 만 포함되어 있는지 확인하십시오.

StackOverflow https://stackoverflow.com/questions/749742

  •  09-09-2019
  •  | 
  •  

문제

Java에서는 문자열에만 포함되어 있는지 확인해야합니다. alphanumeric, space 그리고 dash 캐릭터.

나는 수업을 찾았다 org.apache.commons.lang.StringUtils 그리고 거의 적절한 방법 isAlphanumericSpace(String)...하지만 대시도 포함해야합니다.

이것을하는 가장 좋은 방법은 무엇입니까? 정규 표현식을 사용하고 싶지 않습니다.

도움이 되었습니까?

해결책

Hum ... 그냥 사용하여 스스로 프로그래밍하십시오 string.chatat(int), 꽤 쉽습니다 ...

모든 것을 반복하십시오 위치 색인을 사용한 문자열에서 ASCII 문자 0 ~ 9, A ~ Z 및 A ~ Z가 연속 코드를 사용한다는 사실을 사용하여 비교하므로 해당 문자 X 만 확인하면 조건 중 하나를 확인하면됩니다.

  • '0'과 '9'사이
  • 'a'와 'z'사이
  • 'a와'z '사이
  • 우주 ' '
  • 하이픈 '-'

다음은 기본 코드 샘플입니다 (문자열을 전달할 수있는 charSequence를 사용하지만 문자열 빌더도 arg로 문자열을 전달할 수 있습니다).

public boolean isValidChar(CharSequence seq) {
    int len = seq.length();
    for(int i=0;i<len;i++) {
        char c = seq.charAt(i);
        // Test for all positive cases
        if('0'<=c && c<='9') continue;
        if('a'<=c && c<='z') continue;
        if('A'<=c && c<='Z') continue;
        if(c==' ') continue;
        if(c=='-') continue;
        // ... insert more positive character tests here
        // If we get here, we had an invalid char, fail right away
        return false;
    }
    // All seen chars were valid, succeed
    return true;
}

다른 팁

당신은 사용할 수 있습니다 :

StringUtils.isAlphanumericSpace(string.replace('-', ' '));

java.lang.character의 문자 클래스 메소드를 사용하여 각 문자가 허용되는지 여부를 테스트하면서 문자열을 반복하십시오. 그것은 아마도 StringUtils 방법이하는 모든 일이며, 정규식은 일반화 된 엔진을 동일하게하는 방법 일뿐입니다.

2 가지 옵션 중 하나가 있습니다. 1. 문자열에있을 수있는 숯 목록을 작성한 다음 문자열을 통해 루프하여 각 문자가 목록에 있는지 확인하십시오. 2. 문자열에있을 수없는 숯 목록을 작성한 다음 문자열을 통해 루프하여 각 문자가 목록에 없도록하십시오.

목록을 작성하려면 더 빠른 옵션을 선택하십시오.

Regex 표현식을 사용하십시오. 이 정확한 작업을위한 매우 포괄적 인 시스템이있을 때 자신의 시스템을 작성하는 데 아무런 의미가 없습니다. Regex에 대해 배우거나 닦아야한다면이 웹 사이트를 확인하십시오. 좋습니다. http://regexr.com

나는 이것에 대해 스스로에게 도전 할 것이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top