swift 5.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
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,368评论 0 13
  • 夜莺2517阅读 127,781评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 7,000评论 1 6
  • 我是一名过去式的高三狗,很可悲,在这三年里我没有恋爱,看着同龄的小伙伴们一对儿一对儿的,我的心不好受。怎么说呢,高...
    小娘纸阅读 3,445评论 4 7
  • 那一年,我选择了独立远行,火车带着我在前进的轨道上爬行了超过23个小时; 那一年,我走过泥泞的柏油路,在那个远离故...
    木芽阅读 1,683评论 4 5