swift 各种判断
2018-09-07 本文已影响50人
_Waiting_
base64解码
//MARK:base64编码
/**
* base64编码
*/
func base64Encoding(plainString:String)->String
{
let plainData = plainString.data(using: String.Encoding.utf8)
let base64String = plainData?.base64EncodedString(options: NSData.Base64EncodingOptions.init(rawValue: 0))
return base64String!
}
/**
* base64解码
*/
func base64Decoding(encodedString:String)->String
{
let decodedData = NSData(base64Encoded: encodedString, options: NSData.Base64DecodingOptions.init(rawValue: 0))
let decodedString = NSString(data: decodedData! as Data, encoding: String.Encoding.utf8.rawValue)! as String
return decodedString
}
/// 判断字符串是否为空
///
/// - Parameter string: <#string description#>
/// - Returns: <#return value description#>
func EnterStringIsEmpty(string:String) -> Bool{
if string.count > 0 {
return false
}
return true
}
/// 判断字符串是否为空
///
/// - Parameter string: <#string description#>
/// - Returns: <#return value description#>
func EnterStringIsEmptyOp(string:String?)->Bool{
if string == nil || string == "" {
return true
}
return false
}
//MARK:各种格式判断
/**
* 判断邮箱格式
*/
func EnterIsEmail(email:String) -> Bool {
let regex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
let isValid = predicate.evaluate(with: email)
return (isValid ? true : false)
}
/**
* 判断中英文输入
*/
func EnterIsChineseAndEnglish(string:String) -> Bool {
let regex = "[\\u4e00-\\u9fa5a-zA-Z0-9]{4,20}"
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
let isValid = predicate.evaluate(with: string)
return (isValid ? true : false)
}
/**
* 判断只能输入6位数字
*/
func EnterIsPayPasswordStyle(string:String) -> Bool {
let regex = "^[0-9]{6}$"
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
let isValid = predicate.evaluate(with: string)
return (isValid ? true : false)
}
/**
* 判断只能输入4-20位数字或字母[0-9a-zA-Z]{4,20}
*/
func EnterIsNumbersOrLetters(string:String) -> Bool {
let regex = "[0-9a-zA-Z]{4,20}"
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
let isValid = predicate.evaluate(with: string)
return (isValid ? true : false)
}
/**
* 输入8-20位数字,大写字母和小写字母(?![0-9A-Z]+$)(?![0-9a-z]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$
*/
func EnterPasswordStyle(string:String) -> Bool {
let regex = "(?![0-9A-Z]+$)(?![0-9a-z]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$"
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
let isValid = predicate.evaluate(with: string)
return (isValid ? true : false)
}
//MARK: - 颜色
//RGB转换
func RGB(r:CGFloat,g:CGFloat,b:CGFloat) ->UIColor{
return UIColor(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: 1.0)
}
//RGBA转换
func RGBA(r:CGFloat,g:CGFloat,b:CGFloat, a:CGFloat) ->UIColor{
return UIColor(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: a)
}
/// 将十六进制颜色转伟UIColor
/// - Returns: UIColor
public func getUIColorWithHex(hexString:String) -> UIColor {
//处理数值
var cString = hexString.uppercased().trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
let length = (cString as NSString).length
//错误处理
if (length < 6 || length > 7 || (!cString.hasPrefix("#") && length == 7)){
return UIColor.white
}
if cString.hasPrefix("#"){
cString = (cString as NSString).substring(from: 1)
}
//字符chuan截取
var range = NSRange()
range.location = 0
range.length = 2
let rString = (cString as NSString).substring(with: range)
range.location = 2
let gString = (cString as NSString).substring(with: range)
range.location = 4
let bString = (cString as NSString).substring(with: range)
//存储转换后的数值
var r:UInt32 = 0,g:UInt32 = 0,b:UInt32 = 0
//进行转换
Scanner(string: rString).scanHexInt32(&r)
Scanner(string: gString).scanHexInt32(&g)
Scanner(string: bString).scanHexInt32(&b)
//根据颜色值创建UIColor
return UIColor(red: CGFloat(r)/255.0, green: CGFloat(g)/255.0, blue: CGFloat(b)/255.0, alpha: 1.0)
}
// MARK: - 根据最大宽度计算宽高
func getLableSize(text: String, maxWidth: CGFloat,font:UIFont) -> CGRect {
let maxSize = CGSize(width: maxWidth, height: 0) //注意高度是0
let size = text.boundingRect(with: maxSize, options: .usesLineFragmentOrigin,
attributes: [NSAttributedStringKey.font:font], context: nil)
return size
}
// MARK: - 字典转字符串
func toJSONString(_ dic:[String : Any]) -> String?{
let data = try? JSONSerialization.data(withJSONObject: dic, options: [])
var str = String(data: data!, encoding: String.Encoding.utf8)
str = str?.replacingOccurrences(of: "/", with: "\\/")
return str
}
//MARK: - 时间
/*********时间***********/
///1. 返回当前时间 2018-01-01 23:23
func getNOWTime() -> String {
//获取当前时间
let now = Date()
//创建一个日期格式器
let dformatter = DateFormatter()
dformatter.dateFormat = "yyyy-MM-dd HH:mm"
return dformatter.string(from: now)
}
///1.1 返回当前时间 2018-01-01 23:23:23
func getNOWTimeHHMMSS() -> String {
//获取当前时间
let now = Date()
//创建一个日期格式器
let dformatter = DateFormatter()
dformatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return dformatter.string(from: now)
}
///2. 返回当前时间 2018-01-01
func getNOWTimeYYYY_MM_dd() -> String {
//获取当前时间
let now = Date()
//创建一个日期格式器
let dformatter = DateFormatter()
dformatter.dateFormat = "yyyy-MM-dd"
return dformatter.string(from: now)
}
///2.1 返回当前时间 2018-01
func getNOWTimeYYYY_MM() -> String {
//获取当前时间
let now = Date()
//创建一个日期格式器
let dformatter = DateFormatter()
dformatter.dateFormat = "yyyy-MM"
return dformatter.string(from: now)
}
///2.2 返回当前时间 20180101
func getNOWTimeYYYYMMDD() -> String {
//获取当前时间
let now = Date()
//创建一个日期格式器
let dformatter = DateFormatter()
dformatter.dateFormat = "yyyyMMDD"
return dformatter.string(from: now)
}
///2.3 返回当前时间 201801
func getNOWTimeYYYYMM() -> String {
//获取当前时间
let now = Date()
//创建一个日期格式器
let dformatter = DateFormatter()
dformatter.dateFormat = "yyyyMM"
return dformatter.string(from: now)
}
///3. 返回当前时间的时间戳
func getTimeIntervalSinceNow()->TimeInterval {
//获取当前时间
let now = Date()
let dformatter = DateFormatter()
dformatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
//当前时间的时间戳
let dateStamp:TimeInterval = now.timeIntervalSince1970
return dateStamp
}
///3.1时间字符串转为时间戳
func stringToTimeStamp(stringTime:String?)->TimeInterval {
if let stringTime = stringTime
{
let dfmatter = DateFormatter()
dfmatter.dateFormat="yyyy-MM-dd HH:mm:ss"
let date = dfmatter.date(from: stringTime)
let dateStamp:TimeInterval = date!.timeIntervalSince1970
return dateStamp
}else{
return getTimeIntervalSinceNow()
}
}
///4.1 获取当前日期的前五天的日期
func getBeforeFiveDays() -> [String] {
var arr:[String] = []
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYYMMdd"
let calendar = NSCalendar.current
let com = calendar.dateComponents([.year,.month,.day], from: Date())
var dateCom = DateComponents()
for i in 1...5 {
dateCom.day = com.day! - i
dateCom.month = com.month
dateCom.year = com.year
let day = calendar.date(from: dateCom)
arr.append(dateFormatter.string(from: day!))
}
return arr
}
///4.1.2 获取当前日期的前五天的日期
func getBeforeFiveDays_YYYYMMDD() -> [String] {
var arr:[String] = []
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd"
let calendar = NSCalendar.current
let com = calendar.dateComponents([.year,.month,.day], from: Date())
var dateCom = DateComponents()
for i in 1...5 {
dateCom.day = com.day! - i
dateCom.month = com.month
dateCom.year = com.year
let day = calendar.date(from: dateCom)
arr.append(dateFormatter.string(from: day!))
}
return arr
}
///4.2 获取当前日期的前五个月
func getBeforeFiveMonths() -> [String] {
var arr:[String] = []
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMM"
let calendar = NSCalendar.current
let com = calendar.dateComponents([.year,.month,.day], from: Date())
var dateCom = DateComponents()
for i in 1...5 {
dateCom.month = com.month! - i
dateCom.year = com.year
let day = calendar.date(from: dateCom)
arr.append(dateFormatter.string(from: day!))
}
return arr
}
///4.2.2 获取当前日期的前五个月
func getBeforeFiveMonths_YYYYMM() -> [String] {
var arr:[String] = []
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM"
let calendar = NSCalendar.current
let com = calendar.dateComponents([.year,.month,.day], from: Date())
var dateCom = DateComponents()
for i in 1...5 {
dateCom.month = com.month! - i
dateCom.year = com.year
let day = calendar.date(from: dateCom)
arr.append(dateFormatter.string(from: day!))
}
return arr
}
///4.3 获取当前日期的前一天的日期 20180101
func getBeforeDay() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYYMMdd"
let calendar = NSCalendar.current
let com = calendar.dateComponents([.year,.month,.day], from: Date())
var dateCom = DateComponents()
dateCom.day = com.day! - 1
dateCom.month = com.month
dateCom.year = com.year
let day = calendar.date(from: dateCom)
return dateFormatter.string(from: day!)
}
///4.3.2 获取当前日期的前一个月的日期 201801
func getBeforeMonth() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYYMM"
let calendar = NSCalendar.current
let com = calendar.dateComponents([.year,.month,.day], from: Date())
var dateCom = DateComponents()
dateCom.day = com.day!
dateCom.month = com.month! - 1
dateCom.year = com.year
let day = calendar.date(from: dateCom)
return dateFormatter.string(from: day!)
}
///4.3.3 获取当前日期 201801
func getMonth() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYYMM"
// let calendar = NSCalendar.current
// _ = calendar.dateComponents([.year,.month,.day], from: Date())
// let dateCom = DateComponents()
// dateCom.day = com.day!
// dateCom.month = com.month!
// dateCom.year = com.year
// let day = calendar.date(from: dateCom)
// let day =
return dateFormatter.string(from: Date())
}
/*********时间***********/
//MARK: - 格式化字符串
/// 获取两位小数点的字符串
///
/// - Parameter string: <#string description#>
/// - Returns: <#return value description#>
func getFloat(string:String?) -> String {
if string == nil || string == ""{
return "0.00"
}
let sf:String = NSString.init(format: "%0.2f", Double(string!)!) as String
return sf
}
/// 获取整形字符串
///
/// - Parameter string: <#string description#>
/// - Returns: <#return value description#>
func getInt(string:String?) -> String {
if string == nil || string == ""{
return "0"
}
let sf:String = NSString.init(format: "%d", Int(string!)!) as String
return sf
}
/// 判断是不是全是空格
///
/// - Parameter str: <#str description#>
/// - Returns: <#return value description#>
func isAllApacing(str:String?) -> Bool {
if str == nil {
return true
}
let set = NSCharacterSet.whitespacesAndNewlines
let trimedString = str?.trimmingCharacters(in: set)
if trimedString?.count == 0{
return true
}else{
return false
}
}
//MARK: - 截屏
func cutImageWithView(view:UIView) -> UIImage
{
// 参数①:截屏区域 参数②:是否透明 参数③:清晰度
UIGraphicsBeginImageContextWithOptions(view.frame.size, true, UIScreen.main.scale)
view.layer.render(in: UIGraphicsGetCurrentContext()!)
let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext();
return image;
}