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
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

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