69 lines
1.9 KiB
Swift
69 lines
1.9 KiB
Swift
//
|
|
// String+.swift
|
|
// yinmeng-ios
|
|
//
|
|
// Created by yinmeng on 2024/2/23.
|
|
//
|
|
|
|
import Foundation
|
|
import CommonCrypto
|
|
extension String {
|
|
|
|
func encrypt() -> String? {
|
|
let str = MAIDESEncryptTool.encryptUseDES(self, key: DesKey)
|
|
return str
|
|
}
|
|
|
|
func decrypt() -> String? {
|
|
let str = MAIDESEncryptTool.decryptUseDES(self, key: DesKey)
|
|
return str
|
|
}
|
|
|
|
func decrypt(key:String) -> String? {
|
|
let str = MAIDESEncryptTool.decryptUseDES(self, key: key)
|
|
return str
|
|
}
|
|
|
|
}
|
|
|
|
|
|
extension String {
|
|
/// 截取字符串
|
|
/// - Parameters:
|
|
/// - begin: 开始截取的索引
|
|
/// - count: 需要截取的个数
|
|
/// - Returns: 字符串
|
|
func substring(start: Int, _ count: Int) -> String {
|
|
let begin = index(startIndex, offsetBy: max(0, start))
|
|
let end = index(startIndex, offsetBy: min(count, start + count))
|
|
return String(self[begin..<end])
|
|
}
|
|
|
|
|
|
/// 判断字符串是否全部空格
|
|
var isBlank: Bool {
|
|
let trimmedStr = self.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
return trimmedStr.isEmpty
|
|
}
|
|
|
|
func boundingRect(with constrainedSize: CGSize, font: UIFont, lineSpacing: CGFloat? = nil) -> CGSize {
|
|
let attritube = NSMutableAttributedString(string: self)
|
|
let range = NSRange(location: 0, length: attritube.length)
|
|
attritube.addAttributes([NSAttributedString.Key.font: font], range: range)
|
|
if lineSpacing != nil {
|
|
let paragraphStyle = NSMutableParagraphStyle()
|
|
paragraphStyle.lineSpacing = lineSpacing ?? 0
|
|
attritube.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: range)
|
|
}
|
|
let rect = attritube.boundingRect(with: constrainedSize, options: [.usesLineFragmentOrigin, .usesFontLeading], context: nil)
|
|
var size = rect.size
|
|
if let currentLineSpacing = lineSpacing {
|
|
let spacing = size.height - font.lineHeight
|
|
if spacing <= currentLineSpacing && spacing > 0 {
|
|
size = CGSize(width: size.width, height: font.lineHeight)
|
|
}
|
|
}
|
|
return size
|
|
}
|
|
}
|