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()) ==""
}
- swift 各种string扩展
- Swift String 扩展
- Swift常用的String类扩展
- [Swift]扩展
- Swift-扩展
- Swift 扩展
- Swift-扩展
- swift 扩展
- Swift 扩展
- Swift-String
- Swift - String
- Swift String
- swift String
- swift String
- swift 协议和扩展
- Swift-协议和扩展
- Swift 扩展(十七)
- Swift扩展(Extension)
- Concurrency Managed Workqueue之(一):workqueue的基本概念
- weak reference的理解
- 职场人士如何减压-如何解决职业压力并发症
- C#中使用GUID
- 如何利用深信服af 防火墙找到内部中毒机器或者肉鸡
- swift 各种string扩展
- 基础知识之XML操作类DOMDocument
- 增量式整理数值分析这门课的收获
- Mac环境下react native环境安装与配置
- java递归简单实例
- 【知识】如何使用Amazon Machine Learning构建机器学习预测模型
- “Guccifer 2.0”再公布DNC档案,民主党官员怀疑俄罗斯特工
- 完美解决:软键盘弹出,根据软键盘高度,将所有布局顶上去
- JavaScript跨域访问