Понимание использования метода invertedSet NSCharacterSet

Работая над пониманием строковых методов, я наткнулся на этот полезный класс NSCharacterSet.

который определен в этом посте достаточно хорошо, так как похож на строку, исключающую использование строки для хранения символа в неупорядоченном множестве

В чем разница между NSString и NSCharacterset?

И вот я наткнулся на полезный метод invertedSet, и он стал чуть менее ясным, что именно происходило. Кроме того, я прочитал страницу за страницей на них, все они как бы приукрашивали основы происходящего и прыгали в подробные объяснения. Так что, если вы хотите узнать, что это такое и почему мы используем его ПРОСТО, то было бы не так просто вместо этого получить такие заявления из документации Apple: "Набор символов, содержащий только символы, которых нет в приемнике". - а как мне это точно использовать???

Так вот, что я понимаю, чтобы быть полезным. ПОЖАЛУЙСТА, предоставьте в простых терминах, если я объяснил это неправильно.

Пример использования:

Создайте список символов в NSCharacter. Тем не менее, вы хотите ограничить строку, чтобы содержать.

NSString *validNumberChars      = @"0123456789"; //Only these are valid.

//Now assign to a NSCharacter object to use for searching and comparing later
validCharSet = [NSCharacterSet characterSetWithCharactersInString:validNumberChars ];

//Now create an inverteds set OF the validCharSet. 
NSCharacterSet *invertedValidCharSet = [validCharSet invertedSet];

//Now scrub your input string of bad character, those characters not in the validCharSet

NSString *scrubbedString = [inputString stringByTrimmingCharactersInSet:invertedValidCharSet];

//By passing in the inverted invertedValidCharSet as the characters to trim out, then you are left with only characters that are in the original set. captured here in scrubbedString.

Так это как правильно использовать эту функцию, или я что-то упустил?

Спасибо

Стив

2 ответа

Набор символов - это просто набор символов. Когда вы инвертируете набор символов, вы получаете новый набор, в котором есть все символы, кроме символов из исходного набора.

В вашем примере вы начинаете с набора символов, содержащего 10 стандартных цифр. Когда вы инвертируете набор, вы получите набор, в котором есть все символы, кроме 10 цифр.

validCharSet = [NSCharacterSet characterSetWithCharactersInString:validNumberChars];

Это создает набор символов, содержащий 10 символов 0, 1,..., 9,

invertedValidCharSet = [validCharSet invertedSet];

Это создает инвертированный набор символов, то есть набор всех символов Unicode без10 символов сверху.

scrubbedString = [inputString stringByTrimmingCharactersInSet:invertedValidCharSet];

Это удаляет из начала и конца inputString все персонажи, которые находятся в invertedValidCharSet, Например, если

inputString = @"abc123d€f567ghj"

затем

scrubbedString = @"123d€f567"

Is не, как вы, возможно, ожидаете, удаляет все символы из данного набора.

Один из способов добиться этого (скопирован из NSString - замена символов из NSCharacterSet):

scrubbedString = [[inputString componentsSeparatedByCharactersInSet:invertedValidCharSet] componentsJoinedByString:@""]

Это, вероятно, не самый эффективный метод, но, как ваш вопрос был о пониманииNSCharacterSet Я надеюсь, что это помогает.

Другие вопросы по тегам