[java] 정규식을 사용하지 않고 Java에서 문자가 문자인지 숫자인지 알 수있는 가장 좋은 방법은 무엇입니까?

string.charAt (index)가 정규식을 사용하지 않고 Java에서 Az 문자 또는 숫자인지 인식하는 가장 좋고 / 또는 가장 쉬운 방법은 무엇입니까? 감사.



답변

Character.isDigit(string.charAt(index))( JavaDoc ) 숫자 이면 true를 반환합니다.
Character.isLetter(string.charAt(index))( JavaDoc ) 문자이면 true를 반환합니다.


답변

라틴 문자 또는 십진수 중 하나인지 확인하는 기능을 찾고 있습니다. 이후 char c = 255인쇄 가능한 버전은 이며 Character.isLetter(c). 이 기능은 대부분의 개발자가 찾고있는 것입니다.

private static boolean isLetterOrDigit(char c) {
    return (c >= 'a' && c <= 'z') ||
           (c >= 'A' && c <= 'Z') ||
           (c >= '0' && c <= '9');
}


답변

답변에서 알 수 있듯이 (주의 깊게 살펴보면!) 질문이 모호합니다. “Az 문자”또는 숫자는 무엇을 의미합니까?

  • 문자가 유니 코드 문자인지 숫자 인지 알고 싶다면 Character.isLetterCharacter.isDigit메서드 를 사용하십시오 .

  • 문자가 ASCII 문자인지 숫자 인지 알고 싶다면 ‘a’~ ‘z’, ‘A’~ ‘Z’, ‘0’문자 범위를 비교하여 테스트하는 것이 가장 좋습니다. ‘9’.

모든 ASCII 문자 / 숫자는 유니 코드 문자 / 숫자입니다 … 그러나 ASCII가 아닌 유니 코드 문자 / 숫자 문자가 많이 있습니다. 예를 들어, 악센트 부호가있는 문자, 키릴 문자, 산스크리트어, …


일반적인 해결책은 다음과 같습니다.

Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);

그런 다음 블록이 관심있는 블록 중 하나인지 테스트합니다. 경우에 따라 여러 블록을 테스트해야합니다. 예를 들어, 키릴 문자에 대한 코드 블록이 (적어도) 4 개, 라틴어에 7 개가 있습니다. 이 Character.UnicodeBlock클래스는 잘 알려진 블록에 대한 정적 상수를 정의합니다. javadocs를 참조하십시오 .

모든 코드 포인트는 최대 한 블록에 있습니다.


답변

Java Character 클래스에는 버전 1.0.2부터 isLetterOrDigit 메소드 가 있습니다.


답변

나는 최고에 대해 잘 모르지만 이것은 나에게 매우 간단 해 보인다.

Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))


답변

// check if ch is a letter
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
    // ...

// check if ch is a digit
if (ch >= '0' && ch <= '9')
    // ...

// check if ch is a whitespace
if ((ch == ' ') || (ch =='\n') || (ch == '\t'))
    // ...

출처 : https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html


답변

그 가치를 비교하십시오. ‘a’와 ‘z’, ‘A’와 ‘Z’, ‘0’과 ‘9’사이의 값이어야합니다.