Tom*_*Wei 15 cocoa-touch ios swift
我想在我的NSAttributedString(修剪它)的前面和末尾骑上白色空间.我不能简单地将其转换为字符串并进行修剪,因为其中有图像(附件).我该怎么做?
Bha*_*iya 22
创建扩展名NSAttributedString如下.
extension NSAttributedString {
public func attributedStringByTrimmingCharacterSet(charSet: NSCharacterSet) -> NSAttributedString {
let modifiedString = NSMutableAttributedString(attributedString: self)
modifiedString.trimCharactersInSet(charSet)
return NSAttributedString(attributedString: modifiedString)
}
}
extension NSMutableAttributedString {
public func trimCharactersInSet(charSet: NSCharacterSet) {
var range = (string as NSString).rangeOfCharacterFromSet(charSet)
// Trim leading characters from character set.
while range.length != 0 && range.location == 0 {
replaceCharactersInRange(range, withString: "")
range = (string as NSString).rangeOfCharacterFromSet(charSet)
}
// Trim trailing characters from character set.
range = (string as NSString).rangeOfCharacterFromSet(charSet, options: .BackwardsSearch)
while range.length != 0 && NSMaxRange(range) == length {
replaceCharactersInRange(range, withString: "")
range = (string as NSString).rangeOfCharacterFromSet(charSet, options: .BackwardsSearch)
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在viewController中使用你想要使用的地方.像这样
let attstring = NSAttributedString(string: "this is test message. Please wait. ")
let result = attstring.attributedStringByTrimmingCharacterSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
Run Code Online (Sandbox Code Playgroud)
小智 7
即使在文字中使用表情符号也可以使用
extension NSAttributedString {
/** Will Trim space and new line from start and end of the text */
public func trimWhiteSpace() -> NSAttributedString {
let invertedSet = CharacterSet.whitespacesAndNewlines.inverted
let startRange = string.utf16.description.rangeOfCharacter(from: invertedSet)
let endRange = string.utf16.description.rangeOfCharacter(from: invertedSet, options: .backwards)
guard let startLocation = startRange?.upperBound, let endLocation = endRange?.lowerBound else {
return NSAttributedString(string: string)
}
let location = string.utf16.distance(from: string.startIndex, to: startLocation) - 1
let length = string.utf16.distance(from: startLocation, to: endLocation) + 2
let range = NSRange(location: location, length: length)
return attributedSubstring(from: range)
}
}
Run Code Online (Sandbox Code Playgroud)
用法
let attributeString = NSAttributedString(string: "\n\n\n Hi ??????????????????????????? buddy. ")
let result = attributeString.trimWhiteSpace().string // Hi ??????????????????????????? buddy.
Run Code Online (Sandbox Code Playgroud)