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)
}
}
}
}
网友评论