簡體   English   中英

了解NSCharacterSet的invertSet方法的使用

[英]Understanding the Use of invertedSet method of NSCharacterSet

因此,當我通過理解字符串方法時,我遇到了這個有用的類NSCharacterSet

這篇文章中定義的很好,類似於字符串excpet,用於將char保存在無序集合中

NSString和NSCharacterset之間的區別是什么?

因此,我遇到了有用的方法invertSet,並且它不太明確到底發生了什么。 另外,我閱讀了一頁上面的頁面,它們都掩蓋了所發生的事情的基礎知識並跳進了高級解釋。 因此,如果您想知道這是什么以及為什么我們使用它SIMPLY put,那么從蘋果文檔中得到這樣的語句就不那么容易了:“一個字符集只包含接收器中不存在的字符。” - 我該怎么用呢?

所以這就是我理解的用途。 如果我錯誤地解釋了這一點,請用簡單的術語提供。

示例使用:

在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.

這是如何正確使用此功能,還是我錯過了什么?

謝謝

史蒂夫

字符集只是一組 - 一組字符。 當您反轉字符集時,您將獲得一個新集合,其中包含原始集合之外的所有字符。

在您的示例中,您將從包含10個標准數字的字符集開始。 當您反轉該組時,您將獲得一個除10位數之外的每個字符的集合。

validCharSet = [NSCharacterSet characterSetWithCharactersInString:validNumberChars];

這產生含有10個字符一個字符集01 ,..., 9

invertedValidCharSet = [validCharSet invertedSet];

這將創建反轉字符集,即所有Unicode字符集, 而不包含上面的10個字符。

scrubbedString = [inputString stringByTrimmingCharactersInSet:invertedValidCharSet];

這消除了從一開始結束 inputString是在所有字符invertedValidCharSet 例如,如果

inputString = @"abc123d€f567ghj😄"

然后

scrubbedString = @"123d€f567"

不是 ,正如您所期望的那樣,刪除給定集合中的所有字符。

實現這一目標的一種方法是(從NSString復制- 從NSCharacterSet替換字符 ):

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

這可能不是最有效的方法,但是你的問題是關於理解NSCharacterSet我希望它NSCharacterSet幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM