第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

來自NSCharacterSet的NSArray

來自NSCharacterSet的NSArray

目前,我能夠制作如下的字母數(shù)組[[NSArray alloc]initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil];知道可用[NSCharacterSet uppercaseLetterCharacterSet]如何制作一個數(shù)組呢?
查看完整描述

3 回答

?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個贊

以下代碼創(chuàng)建一個包含給定字符集的所有字符的數(shù)組。它也適用于“基本多語言平面”之外的字符(字符> U + FFFF,例如U + 10400 DESERET CAPITAL LETTER LONG I)。


NSCharacterSet *charset = [NSCharacterSet uppercaseLetterCharacterSet];

NSMutableArray *array = [NSMutableArray array];

for (int plane = 0; plane <= 16; plane++) {

    if ([charset hasMemberInPlane:plane]) {

        UTF32Char c;

        for (c = plane << 16; c < (plane+1) << 16; c++) {

            if ([charset longCharacterIsMember:c]) {

                UTF32Char c1 = OSSwapHostToLittleInt32(c); // To make it byte-order safe

                NSString *s = [[NSString alloc] initWithBytes:&c1 length:4 encoding:NSUTF32LittleEndianStringEncoding];

                [array addObject:s];

            }

        }

    }

}

為此,uppercaseLetterCharacterSet給出了1467個元素的數(shù)組。但請注意,字符> U + FFFF作為UTF-16代理對存儲在中NSString,因此例如U + 10400實(shí)際上存儲NSString為2個字符“ \ uD801 \ uDC00”。


Swift 2代碼可以在此問題的其他答案中找到。這是一個Swift 3版本,作為擴(kuò)展方法編寫的:


extension CharacterSet {

    func allCharacters() -> [Character] {

        var result: [Character] = []

        for plane: UInt8 in 0...16 where self.hasMember(inPlane: plane) {

            for unicode in UInt32(plane) << 16 ..< UInt32(plane + 1) << 16 {

                if let uniChar = UnicodeScalar(unicode), self.contains(uniChar) {

                    result.append(Character(uniChar))

                }

            }

        }

        return result

    }

}

例:


let charset = CharacterSet.uppercaseLetters

let chars = charset.allCharacters()

print(chars.count) // 1521

print(chars) // ["A", "B", "C", ... "]

(請注意,某些字符可能不會顯示在用于顯示結(jié)果的字體中。)


查看完整回答
反對 回復(fù) 2019-10-11
  • 3 回答
  • 0 關(guān)注
  • 543 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號