swift 各种string扩展

来源:互联网 发布:js iframe src 编辑:程序博客网 时间:2024/05/25 21:35

// 获取文字的宽高

    staticfunc getTextRectSize(text:NSString,font:UIFont,fontNumber:CGFloat) -> CGRect {

        

        let attributes = [NSFontAttributeName: font]

        

        let option =NSStringDrawingOptions.UsesLineFragmentOrigin

        

        let size =CGSize(width:CGFloat(MAXFLOAT), height: fontNumber)

        

        let rect:CGRect = text.boundingRectWithSize(size, options: option, attributes: attributes, context: nil)

        

        return rect;

    }

    

    // 测量多行字符串宽高

    func getTextRectSize(font:UIFont, maxWidth:CGFloat, maxHeight:CGFloat) -> CGSize {

        

        let attributes = [NSFontAttributeName: font]

        

        let option =NSStringDrawingOptions.UsesLineFragmentOrigin

        

        let size =CGSize(width: maxWidth, height: maxHeight)

        

        let rect:CGRect =self.boundingRectWithSize(size, options: option, attributes: attributes, context:nil)

        

        return rect.size;

    }

// 测量单行字符串

    func sizeWithFont(font:UIFont!) ->CGSize {

        let attrs = [NSFontAttributeName:font]

        let string:NSString =self

        return string.sizeWithAttributes(attrs)

    }

    

    // 子字符串位置

    func positionOf(sub:String)->Int {

        var pos = -1

        iflet range =self.rangeOfString(sub) {

            if !range.isEmpty {

                pos = self.startIndex.distanceTo(range.startIndex)

            }

        }

        return pos

    }

    

    // 子字符串[pos, end)

    func subStringFrom(pos:Int)->String {

        var substr =""

        let start =self.startIndex.advancedBy(pos)

        let end =self.endIndex

        // println("String: \(self), start:\(start), end: \(end)")

        let range = start..<end

        substr = self[range]

        // println("Substring: \(substr)")

        return substr

    }

    

    // 子字符串[0, pos)

    func subStringTo(pos:Int)->String {

        var substr =""

        let end =self.startIndex.advancedBy(pos-1)

        let range =self.startIndex...end

        substr = self[range]

        return substr

    }

    

    // 特殊字符编码处理

    func urlEncoded()->String {

        let res:NSString =CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,selfasNSString,nil,

                                                                  "!*'();:@&=+$,/?%#[]",CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))

        return resasString

    }

    

    // 特殊字符解码处理

    func urlDecoded()->String {

        let res:NSString =CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,selfasNSString,"",CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))

        return resasString

    }

    

    // 字符串的起始位置

    func range()->Range<String.Index> {

        returnstartIndex..<endIndex//Range<String.Index>(start:startIndex, end:endIndex)

    }

    

    /**

     字符串时间转化为时间

     */

    func dateFromString() ->NSDate {

        let dateFormatter           =NSDateFormatter()

        dateFormatter.dateFormat    ="yyyy-MM-dd HH:mm"

        let date                    = dateFormatter.dateFromString(self)

        return date!

    }

    

    // 字符串转换倒计时

    func stringToEndTime() ->String {

        let dateFormatter           =NSDateFormatter()

        dateFormatter.dateFormat    ="yyyy-MM-dd HH:mm:ss"

        let endTimeDate             = dateFormatter.dateFromString(self)

        if endTimeDate ==nil {

            return""

        }

        // 计算时间差 NSCalendarUnit.Year, NSCalendarUnit.Month,

        let dateComponents          =NSCalendar.currentCalendar().components([NSCalendarUnit.Day,NSCalendarUnit.Hour,NSCalendarUnit.Minute,NSCalendarUnit.Second], fromDate:NSDate(), toDate: endTimeDate!, options: .WrapComponents)

        

        var timeResult :String     =""

        // 显示倒计时.若超时,则显示"00:00:00".

        if dateComponents.year <0 || dateComponents.month <0 || dateComponents.day <0 || dateComponents.hour <0 || dateComponents.minute <0 || dateComponents.second <0  {

            timeResult              = "00:00:00"

        } elseif dateComponents.day >0 {

            timeResult              = "\(dateComponents.day)\(dateComponents.hour)小时"

        } else {

            let hour                = dateComponents.hour >=10 ?"\(dateComponents.hour)" :"0\(dateComponents.hour)"

            let minute              = dateComponents.minute >=10 ?"\(dateComponents.minute)" :"0\(dateComponents.minute)"

            let second              = dateComponents.second >=10 ?"\(dateComponents.second)" :"0\(dateComponents.second)"

            timeResult              = hour + ":" + minute + ":" + second

        }

        return timeResult

    }

    

    // 判断是否全是空白

    func isBlank() ->Bool {

        returnstringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) ==""

    }


0 0