使用 Swift 判斷中英文字符

在開(kāi)發(fā)過(guò)程中,經(jīng)常要對(duì)用戶輸入的內(nèi)容進(jìn)行長(zhǎng)度限制。而對(duì)于字符串信息來(lái)講,中文字符和英文字符雖然長(zhǎng)度不同,但都占一個(gè)字符。下面我們寫(xiě)一個(gè)函數(shù)來(lái)計(jì)算字符串的長(zhǎng)度。

static func numberOfChars(_ str: String) -> Int {
    var number = 0
    
    guard str.characters.count > 0 else {return 0}
    
    for i in 0...str.characters.count - 1 {
        let c: unichar = (str as NSString).character(at: i)
        
        if (c >= 0x4E00) {
            number += 2
        }else {
            number += 1
        }
    }
    return number
}

代碼中的 0x4E00 是一個(gè)十六進(jìn)制數(shù),這是字符編碼集中中文字符開(kāi)始的地方,日文的編碼邊界是 0x0800。 所以我們根據(jù)這個(gè)邊界值來(lái)判斷字符應(yīng)該占兩位還是一位。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字符串字符串是一系列字符組成的。Swift字符串由String類(lèi)型表示。1.使用字符串文字作為常量或變量的初始值:...
    沐靈洛閱讀 833評(píng)論 0 5
  • 字符集和編碼簡(jiǎn)介 在編程中常??梢砸?jiàn)到各種字符集和編碼,包括ASCII,MBCS,Unicode等字符集。確切的說(shuō)...
    蘭山小亭閱讀 9,075評(píng)論 0 13
  • 計(jì)算機(jī)是如何表示字符的? 計(jì)算中的數(shù)據(jù)都是二進(jìn)制(0和1),用一位來(lái)存儲(chǔ)1個(gè)0或1,稱為bit。8個(gè)二進(jìn)制序列(8...
    公子拙閱讀 4,552評(píng)論 4 17
  • 文/曲尚菇?jīng)?01. 阿晗說(shuō):如果兩個(gè)人在一起,身邊朋友都不知道的話,那這段戀情一定長(zhǎng)久不了。 因?yàn)楫?dāng)真喜歡一個(gè)人...
    曲尚閱讀 1,361評(píng)論 51 32
  • 蒼天在上,四方云動(dòng),望著那一座座雄偉的高山綠草,鮮花在努力綻放,爭(zhēng)先恐后,不知在為何而爭(zhēng)艷?然而這些并不是我所關(guān)注...
    羅漢不是仙閱讀 233評(píng)論 0 1

友情鏈接更多精彩內(nèi)容