문자열 UUID가 Java에서 유효한지 확인
3404 단어 javauuidtokenprogramming
첫 단어
모든 크레딧은 Daniel Heid에게 있습니다. 이 코드는 Github의 hibernate-validator 저장소에 있는 그의 코드PR를 기반으로 합니다. 고마워, 다니엘!
코드
저를 읽고 싶지 않다면 아래 코드를 복사하고 제가 코드의 첫 줄에 남겨둔 지침을 따르십시오.
/*
* This code is based on this PR: https://github.com/hibernate/hibernate-validator/pull/1199
* All credits to Daniel Heid (dheid). I just made some adjustments.
* In order to apply this on your situation, just create this class and call the method "isValidStringUUID". As its param, pass in your string UUID.
*/
public class UUIDValidator {
enum LetterCase {
/**
* Only lower case is valid
*/
LOWER_CASE,
/**
* Only upper case is valid
*/
UPPER_CASE,
/**
* Every letter case is valid
*/
INSENSITIVE
}
private static LetterCase letterCase = LetterCase.LOWER_CASE;
private static final int[] GROUP_LENGTHS = { 8, 4, 4, 4, 12 };
public static boolean isValidStringUUID(String value) {
if ( value == null ) {
return false;
}
int valueLength = value.length();
if ( valueLength == 0 ) {
return false;
}
else if ( valueLength != 36 ) {
return false;
}
int groupIndex = 0;
int groupLength = 0;
int checksum = 0;
for ( int charIndex = 0; charIndex < valueLength; charIndex++ ) {
char ch = value.charAt( charIndex );
if ( ch == '-' ) {
groupIndex++;
groupLength = 0;
}
else {
groupLength++;
if ( groupLength > GROUP_LENGTHS[groupIndex] ) {
return false;
}
int numericValue = Character.digit( ch, 16 );
if ( numericValue == -1 ) {
// not a hex digit
return false;
}
if ( numericValue > 9 && !hasCorrectLetterCase( ch ) ) {
return false;
}
checksum += numericValue;
}
}
// NIL UUID
if ( checksum == 0 ) {
return false;
}
return true;
}
private static boolean hasCorrectLetterCase(char ch) {
if ( letterCase == null ) {
return true;
}
if ( letterCase == LetterCase.LOWER_CASE && !Character.isLowerCase( ch ) ) {
return false;
}
return letterCase != LetterCase.UPPER_CASE || Character.isUpperCase( ch );
}
}
작동하게 하려면 프로젝트에서 이 클래스를 생성하고
UUIDValidator.isValidStringUUID(String your_UUID_String_Goes_Here)
메서드를 호출하십시오.이 코드에는 모든 종류의 유효성 검사가 있습니다. null인 경우, 빈 문자열인 경우, 길이가 잘못된 경우, UUID 문자열의 숫자에 16진수만 포함된 경우, UUID의 각 그룹에 올바른 양의 숫자가 포함된 경우 캐릭터 등
좀 더 전문화된 검증인을 원하신다면 앞서 말씀드렸던 PR 확인도 잊지마세요. 또한 UUID 버전 및 해당 변형을 가져오는 방법도 포함되어 있습니다.
읽기 좋은
이 주제에 대해 자세히 알아보고 싶다면(확실히 풍부하고 흥미로움) 확인할 수 있습니다this link.
...끝!
그게 다야! 읽어주셔서 감사합니다 😁
Reference
이 문제에 관하여(문자열 UUID가 Java에서 유효한지 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/miltonsermoud/checking-if-string-uuid-is-valid-with-java-37da텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)