美文网首页
iOS-swift String的扩展

iOS-swift String的扩展

作者: 红豆_0223 | 来源:发表于2018-06-22 17:59 被阅读0次

importFoundation

import UIKit

extension String{

    //判断是否是URL地址

    funcisURL() ->Bool{

        varresult1 =false

        varresult2 =false

        let urlRegex1 = "^https://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$";

        leturlTest1 =NSPredicate(format:"SELF MATCHES %@", urlRegex1)

        result1 = (urlTest1.evaluate(with:self))

        let urlRegex2 = "^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$";

        leturlTest2 =NSPredicate(format:"SELF MATCHES %@", urlRegex2)

        result2 = (urlTest2.evaluate(with:self))

        returnresult1 || result2

    }

    //验证电话号码

    funcisPhoneNumber() ->Bool{

        varresult =false

        let phoneRegex = "^((13[0-9])|(17[0-9])|(14[^4,\\D])|(15[^4,\\D])|(18[0-9]))\\d{8}$|^1(7[0-9])\\d{8}$";

        letphoneTest =NSPredicate(format:"SELF MATCHES %@", phoneRegex)

        result = (phoneTest.evaluate(with:self))

        returnresult;

    }

    //验证邮编格式

    funcisZipCodeNumber() ->Bool{

        ifself.count==0{

            returnfalse

        }

        let zipCodeNumber = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"

        letregexCodeNumber =NSPredicate(format:"SELF MATCHES %@",zipCodeNumber)

        ifregexCodeNumber.evaluate(with:self) ==true{

            returntrue

        }else

        {

            returnfalse

        }

    }

    // String转float

    varfloatValue:Float{

        return (self as NSString).floatValue

    }

    vardoubleValue:Double{

        return (self as NSString).doubleValue

    }

    varintValue:Int{

        return (self as NSString).integerValue

    }

    // 过滤掉所有换行、空格和Tab

    funcremoveAllSpaceAndNewline() ->String{

        varstr =self.replacingOccurrences(of:" ", with:"")

        str = str.replacingOccurrences(of:" ", with:"")

        str = str.replacingOccurrences(of:"\r", with:"")

        str = str.replacingOccurrences(of:"\n", with:"")

        returnstr

    }

    //把图片地址的空格替换为 20%

    funcreplaceSpaceWith20Percent() ->String{

        varstr =self.replacingOccurrences(of:" ", with:"%20")

        str = str.replacingOccurrences(of:" ", with:"%20")

        returnstr

    }

    /**

     时间戳转时间

     */

    funcformartTimeStamp() ->String{

        letstring =NSString.init(string:self)

        lettimeSta:TimeInterval= string.doubleValue

        lettimeFormatter =DateFormatter()

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

        letdate =Date.init(timeIntervalSince1970: timeSta)

        returntimeFormatter.string(from: date)

    }

    funcformatTimeWithRex(rex:String) ->String{

        letstring =NSString.init(string:self)

        lettimeSta:TimeInterval= string.doubleValue

        lettimeFormatter =DateFormatter()

        timeFormatter.dateFormat= rex

        letdate =Date.init(timeIntervalSince1970: timeSta)

        returntimeFormatter.string(from: date)

    }

    /**

     将分变成元

     保留两位小数

     */

    funcyuanMoneyString() ->String{

        letstring =NSString.init(string:self)

        varnewString =String(string)

        ifstring.length>2{

            newString = string.substring(to: string.length-2) +"."+ string.substring(with:NSRange.init(location: string.length-2, length:2))

        }elseifstring.length==2{

            newString ="0."+String(string )

        }elseifstring.length==1{

            newString ="0.0"+String(string )

        }else{

            newString ="0.00"

        }

        returnnewString

    }

    /**

       获得整元

 */

    funcMoneyIntegerPart() ->String{

        letstring =NSString.init(string:self)

        letfen = string.integerValue

        letnewString =String(fen/100)

        returnnewString

    }

    /**

     将字典数组变成json 字符串

     */

    funcchangeDictionsToJsonString(dics:Any) ->String{

        vardataStr =""

        do{

            let data = try JSONSerialization.data(withJSONObject: dics, options: JSONSerialization.WritingOptions.prettyPrinted)

            dataStr  =String(describing:NSString.init(data: data, encoding:String.Encoding.utf8.rawValue)!)

        }catch{

            HQLog(message:"转换失败:\(error)")

        }

        returndataStr

    }

    /**

     将json字符串转dic

 */

    funcgetJsonDic() ->Any? {

        vardic :Any!

        letjsonData =self.data(using:String.Encoding.utf8)

        ifnil!= jsonData {

            do{

                dic =try JSONSerialization.jsonObject(with: jsonData!, options: JSONSerialization.ReadingOptions.mutableContainers)

            }catch{

                HQLog(message:"解析错误")

            }

        }

        returndic

    }

    /**

     根据字体和宽度计算文字高度

     - parameter width: 约束宽度

     - parameter font:  字体大小

     - returns: 高度

     */

    funcheightWithConstrainedWidth(width:CGFloat, font:UIFont) ->CGFloat{

        letconstraintRect =CGSize(width: width, height:CGFloat.greatestFiniteMagnitude)

        letboundingBox =self.boundingRect(with: constraintRect, options:NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSAttributedStringKey.font: font], context:nil)

        returnboundingBox.height

    }

    //打电话

    funccallPhone() {

        leturlString ="tel://"+self

        ifleturl =URL(string: urlString) {

            //根据iOS系统版本,分别处理

            if#available(iOS10, *) {

                UIApplication.shared.open(url, options: [:],

                                          completionHandler: {

                                            (success)in

                })

            }else{

                UIApplication.shared.openURL(url)

            }

        }

    }

}

相关文章

网友评论

      本文标题:iOS-swift String的扩展

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