美文网首页
计算字符串的字符数

计算字符串的字符数

作者: 霸_霸霸 | 来源:发表于2025-03-03 17:42 被阅读0次

在开发时,我们经常遇到限制一个字符串的长度,有时候会要求不超过N个字符,简单封装了下。

1. 计算字符串的字符数

extension String {
    /// 字符数
    var charactersCount: Int {
        guard !isEmpty else { return 0 }
        var bytesCount = count
        let array = Array(self)
        for i in 0..<count {
            let charValue = array[i]
            if let asciiValue = charValue.utf8.first {
                if asciiValue < 0 || asciiValue > 127 {
                    bytesCount += 1
                }
            }
        }
        return bytesCount
    }
}

2. 截取前N个字符

extension String {
    /// 获取前maxCharacterCount个字符对应的字符串
    /// - Parameter maxCharacterCount: 最大字符数
    /// - Returns: 截取的字符串
    func prefixText(with maxCharacterCount: Int) -> Self {
        guard !isEmpty else { return "" }

        var maxLength = maxCharacterCount
        var subLength = 0
        let array = Array(self)
        for i in 0..<count {
            let charValue = array[i]
            maxLength -= 1

            if let asciiValue = charValue.utf8.first {
                if asciiValue < 0 || asciiValue > 127 {
                    maxLength -= 1
                }
            }

            if maxLength < 0 {
                break
            } else {
                subLength += 1
            }
        }
        return Self(prefix(subLength))
    }
}

3. 监听UITextField内容变化,若字符数超出N个,则截取前N个字符数

extension ViewController: UITextViewDelegate {
    func textViewDidChange(_ textView: UITextView) {
        guard let text = textView.text.qjn_stringByTrim() else {
            // do something
            return
        }

        if let selectedRange = textView.markedTextRange, let pos = textView.position(from: selectedRange.start, offset: 0) {
            return
        }

        DispatchQueue.global().async {
            if text.charactersCount > N {
                DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) {
                    textView.text = text.prefixText(with: N)
                    // do something
                }
            } else {
                // do something
            }
        }
    }
}

相关文章

  • 字符串函数

    计算字符串字符数和字符串长度的函数 CHAR_LENGTH(str):返回所包含个数LENGTH(str):返回字...

  • 5.C语言的字符串

    以字符数组的方式表示以\0表示结尾 strlen函数:计算字符串长度 计算的是字符数,而不是字数,并且不包括\0它...

  • C代写 CSCE 155E:Homework 5代写留学生asp

    IntroductionC语言,实现基本的字符串操作函数和矩阵计算,包括字符串复制,字符串拼接,字符串比对,计算字...

  • 不等高Cell

    计算字符串一行的高度 计算字符串多行的高度

  • iOS 计算字符串高度(宽)

    记录一下。。。。 计算字符串高度(宽) 计算字符串的高度注意事项: 字符串长度小于1时,应该返回0 计算得到的字符...

  • IOS计算字符串字节长度

    计算字符串字节长度:方法一 计算字符串字节长度:方法二

  • C字符串

    字符串声明: 输入字符串 字符数组赋值,计算长度 字符串拼接,比较

  • 根据计算字符串宽度,字符串高度

    根据字符串计算宽度 获得字符串的高度

  • 4.Python字符编码、格式化、运算符

    一.字符编码 学习Demo字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数...

  • NSString

    一、根据字符串的宽度计算字符串的高度 二、字符串截取、匹配、分隔 三、字符串替换

网友评论

      本文标题:计算字符串的字符数

      本文链接:https://www.haomeiwen.com/subject/ppjcmjtx.html