美文网首页
swift 5.0 字符串相关函数

swift 5.0 字符串相关函数

作者: 奋斗的小马达 | 来源:发表于2020-12-26 17:11 被阅读0次

1、字符串转int

        //1、String 转 Int
        let intStr: String = "12345"
        print("str返回的类型是:--->\(type(of: intStr))");
        let stringToInt:Int = Int.init(intStr)!
        let stringToInt1:Int = Int(intStr)!//也可以简写成
        print("stringToInt返回的类型是:--->\(type(of: stringToInt))");
        print("stringToInt返回的类型是:--->\(type(of: stringToInt1))");

2、字符串转Double(Float也是一样)

        let doubleStr: String = "12345.000"
        print("doubleStr返回的类型是:--->\(type(of: doubleStr))");
        let stringToDouble:Double = Double.init(intStr)!
        let stringToDouble1:Double = Double(intStr)!//也可以简写成
        print("stringToDouble返回的类型是:--->\(type(of: stringToDouble))");
        print("stringToDouble1返回的类型是:--->\(type(of: stringToDouble1))");

3、字符串转数组

        let arrayStr: String = "12345"
        print("arrayStr返回的类型是:--->\(type(of: arrayStr))");
        
        let stringToArray:Array = arrayStr.map { String($0) }
        print("stringToArray返回的类型是:--->\(type(of: stringToArray))");
        print(stringToArray)
        
        let stringToArray1:Array = Array(arrayStr)//也可以简写成
        print("stringToArray1返回的类型是:--->\(type(of: stringToArray1))");
        print(stringToArray1)
        //注意:以上两种方法虽然都能把字符串转变成数组 但是他们的返回类型不一样,第一种返回的是:Array<String>  第二种返回的是:Array<Character>  具体使用哪种方式视需求而定

4、获取字符串长度

        let lengthStr: String = "12345"
        print("lengthStr字符串的长度=\(lengthStr.count)")

5、根据String字符串固定宽度 获取高度(获取宽度)

        let getStringHeightStr:String = "我不知道我有多喜欢你,但如果去见你,我一定用跑,我说去见你的这一路上风都是甜的,这一路没有桃花,只见你你给我种下的白铃兰"
        let stringHeight:CGFloat = self.getLabHeigh(testStr: getStringHeightStr, font: UIFont.systemFont(ofSize: 18), width: 200)
        print("stringHeight=\(stringHeight)")
    //MARK:固定宽度根据字符串长度返回高度 (此函数时NSString的函数 所以在使用的时候 需要把 String 转成 NSString )
    func getLabHeigh(testStr:String,font:UIFont,width:CGFloat) -> CGFloat {
        let statusLabelText: NSString = testStr as NSString
        let size = CGSize.init(width: width, height: CGFloat(MAXFLOAT))
        let dic = NSDictionary(object: font, forKey: NSAttributedString.Key.font as NSCopying)
        let strSize = statusLabelText.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: dic as? [NSAttributedString.Key : Any], context: nil).size
        return strSize.height
    }

6、字符串截取

let tmpString = "一二三四五六七八九十"
        
        print(tmpString[tmpString.startIndex])//截取字符串第一个字符
        
        //通过调用 String 的 index(before:) 或 index(after:) 方法,可以立即得到前面或后面的一个索引。你还可以通过调用 index(_:offsetBy:) 方法来获取对应偏移量的索引
        
        print(tmpString[tmpString.index(after: tmpString.startIndex)])//截取字符串第二个字符
        
        print(tmpString[tmpString.index(before: tmpString.endIndex)])//截取字符串最后一个字符
        
        let someIndex = tmpString.index(tmpString.startIndex, offsetBy: 3)//截取字符串下标为3的字符
        print(tmpString[someIndex])
        
        let anotherIndex = tmpString.index(tmpString.endIndex, offsetBy: -3)//截取字符串下标为(tmpString.count-3)的字符
        print(tmpString[anotherIndex])
        
        //截取某字符串的第3个字符到第6个字符范围的字符串(区间 类似OC的  NSMakeRange(3,6) )
        let index3 = tmpString.index(tmpString.startIndex, offsetBy: 3)
        let index4 = tmpString.index(tmpString.startIndex, offsetBy: 6)
        let sub4 = tmpString[index3..<index4]
        print("sub4=\(sub4)")
        
        let startRang = tmpString.range(of: "二三")!
        let endRang = tmpString.range(of: "六七")!
        print(tmpString[...startRang.lowerBound]) //下界
        print(tmpString[startRang.upperBound...])//上界
        print(tmpString[startRang.upperBound..<endRang.lowerBound]) //区间不包含两端

7、字符串拼接

        let aa = "aa"
        let bb = "bb" + "dd"
        print(aa + bb)
        print(aa + bb + "cc")
        print(aa.appending(bb))

8、字符串包含(contains)

        let cc = "ABCDEFG"
        print(cc.contains("D"))

9、字符串相等 (== 或 elementsEqual)

        let dd = "456和789"
        let ee = "456和789"
        print(dd==ee)
        print(dd.elementsEqual(ee))

10、字符串富文本

        let textLabel = UILabel.init(frame: CGRect.init(x: 50, y: 100, width: kWidth-100, height: 200))
        self.view.addSubview(textLabel)
        let labelstr = "我不知道我有多喜欢你,但如果去见你,我一定用跑,我说去见你的这一路上风都是甜的,这一路没有桃花,只见你你给我种下的白铃兰"
        textLabel.numberOfLines = 0
        textLabel.backgroundColor = .orange
        textLabel.attributedText = self.changeFontColor(totalString:labelstr, subString: "这一路风都是甜的", font: UIFont.systemFont(ofSize: 20), textColor: .red)
    //MARK:swift富文本
    public func changeFontColor(totalString: String, subString: String, font: UIFont, textColor: UIColor)-> NSMutableAttributedString {
        let attStr = NSMutableAttributedString.init(string: totalString)
        if totalString.contains(subString) {
            let startRang = totalString.range(of: subString)!
            let tmp = totalString[startRang.lowerBound...]
            attStr.addAttributes([NSAttributedString.Key.foregroundColor: textColor, NSAttributedString.Key.font: font], range: NSRange.init(location: totalString.count-tmp.count, length: subString.count))
            return attStr
        }
        print("请注意富文本设置无效,被设置的目标字符串在原字符串中找不到")
        return attStr
    }

相关文章

网友评论

      本文标题:swift 5.0 字符串相关函数

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