your programing

NSCharacterSet : alphanumericCharacterSet 텍스트 제한에“_”를 어떻게 추가합니까?

lovepro 2021. 1. 5. 19:46
반응형

NSCharacterSet : alphanumericCharacterSet 텍스트 제한에“_”를 어떻게 추가합니까?


사용자 이름을 입력하기 위해 UITextField를 제한하는 NSCharacter 세트 빌드. 사용자가 밑줄 (예 : [A-Za-z0-9_])도 입력 할 수 있기를 원하지만 alphanumericCharacterSet에는이를 포함하지 않습니다. 짧은 형식으로 범위를 지정하는 방법이 있습니까? 나는 + (id)characterSetWithRange:(NSRange)aRange봤지만 그것이 어떻게 작동하는지 정말로 이해하지 못한다.

문자 집합을 전달하는 간단한 UITextField 하위 클래스가 있습니다. 제한은 제대로 작동하며 사용자가 영숫자 이외의 항목을 입력 할 수 없습니다. 해당 수당에 "_"를 추가하기 만하면됩니다.

NSCharacterSet *characterSet = [NSCharacterSet alphanumericCharacterSet];
[textField setAllowed:characterSet];
[textField setFrame:frame];

목표 -C

NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@"_"];
[_alnum formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];

빠른

let _alnum = NSMutableCharacterSet(charactersIn: "_")
_alnum.formUnion(with: .alphanumerics)

또 다른 방법은 변경 가능하게 만들고 추가하는 것입니다.

목표 -C

NSMutableCharacterSet *characterSet = [NSMutableCharacterSet alphanumericCharacterSet];
[characterSet addCharactersInString:@"_"];

빠른

let characterSet = NSMutableCharacterSet.alphanumeric()
characterSet.addCharacters(in: "_")

다음을 사용하여 플레이 그라운드에서 추가되었는지 확인할 수 있습니다.

characterSet.characterIsMember(UInt16(Character("^").unicodeScalars.first!.value)) // false
characterSet.characterIsMember(UInt16(Character("_").unicodeScalars.first!.value)) // true -- YAY!
characterSet.characterIsMember(UInt16(Character("`").unicodeScalars.first!.value)) // false

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSCharacterSet *blockedCharacters = [[NSCharacterSet whitespaceCharacterSet] invertedSet];
    NSCharacterSet *blockedCharacters2 = [[NSCharacterSet letterCharacterSet] invertedSet];
    return ([string rangeOfCharacterFromSet:blockedCharacters].location == NSNotFound || [string rangeOfCharacterFromSet:blockedCharacters2].location);  

}

참조 URL : https://stackoverflow.com/questions/2767675/nscharacterset-how-do-i-add-to-alphanumericcharacterset-text-restriction

반응형