// // String+Extenstion.swift // o2app // // Created by 刘振兴 on 2017/8/18. // Copyright © 2017年 zone. All rights reserved. // import Foundation import UIKit extension String { func subString(from: Int, to: Int? = nil) -> String { if from >= self.length { return self } let startIndex = self.index(self.startIndex, offsetBy: from) if to == nil { return String(self[startIndex..= to! { return String(self[startIndex.. CGFloat { return self.boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [.font: UIFont.systemFont(ofSize: fontSize)], context: nil).size.height } // MARK: - URL允许的字符 var urlEscaped: String { return self.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)! } // MARK:- 获取字符串的CGSize func getSize(with fontSize: CGFloat) -> CGSize { let str = self as NSString let size = CGSize(width: UIScreen.main.bounds.width, height: CGFloat(MAXFLOAT)) return str.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: fontSize)], context: nil).size } // MARK:- 获取文本图片 func getTextImage(_ size:CGSize,textColor tColor:UIColor,backColor bColor:UIColor,textFont tFont:UIFont) -> UIImage? { let label = UILabel(frame: CGRect(origin:CGPoint(x:0,y:0), size: size)) label.textAlignment = .center label.textColor = tColor label.font = tFont label.text = self label.backgroundColor = bColor UIGraphicsBeginImageContextWithOptions(label.frame.size, true, 0) guard let context = UIGraphicsGetCurrentContext() else { return nil } label.layer.render(in: context) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } subscript(r: Range) -> String { get { let startIndex = self.index(self.startIndex, offsetBy: r.lowerBound) let endIndex = self.index(self.startIndex, offsetBy: r.upperBound) return String(self[startIndex..) -> String { get { let startIndex = self.index(self.startIndex, offsetBy: r.lowerBound) let endIndex = self.index(self.startIndex, offsetBy: r.upperBound) return String(self[startIndex...endIndex]) } } static func randomString(length:Int) -> String { let charSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" var c = charSet.map { String($0) } var s:String = "" for _ in (1...length) { s.append(c[Int(arc4random()) % c.count]) } return s } }