我想在前面和我的NSAttributedString(修剪它)結束時使用白色空格。我不能簡單地將它轉換爲字符串並進行修剪,因爲它中有圖像(附件)。 我該怎麼做?Swift NSAttributedString修剪
回答
創建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)
}
}
}
並在你想使用的viewController中使用。這樣
let attstring = NSAttributedString(string: "this is test message. Please wait. ")
let result = attstring.attributedStringByTrimmingCharacterSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
以下代碼可以滿足您的要求。
var attString: NSAttributedString = NSAttributedString(string: " this is att string")
let trimmedString = attString.string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
我究竟如何得到範圍? –
嘗試使用上面提到的代碼從屬性字符串中刪除前端和結尾空格。 – macpandit
上面的代碼工作正常。但它會返回給你'字符串'而不是'NSAttributedString'。你只需要將'String'轉換爲'NSAttributedString'即可。漂亮的兩行代碼。 –
我做了一個迅速實現3,以防萬一有人有興趣:
/**
Trim an attributed string. Can for example be used to remove all leading and trailing spaces and line breaks.
*/
public func attributedStringByTrimmingCharactersInSet(set: CharacterSet) -> NSAttributedString {
let invertedSet = set.inverted
let rangeFromStart = string.rangeOfCharacter(from: invertedSet)
let rangeFromEnd = string.rangeOfCharacter(from: invertedSet, options: .backwards)
if let startLocation = rangeFromStart?.upperBound, let endLocation = rangeFromEnd?.lowerBound {
let location = string.distance(from: string.startIndex, to: startLocation) - 1
let length = string.distance(from: startLocation, to: endLocation) + 2
let newRange = NSRange(location: location, length: length)
return self.attributedSubstring(from: newRange)
} else {
return NSAttributedString()
}
}
雨燕3.2版本:
extension NSAttributedString {
public func trimmingCharacters(in characterSet: CharacterSet) -> NSAttributedString {
let modifiedString = NSMutableAttributedString(attributedString: self)
modifiedString.trimCharacters(in: characterSet)
return NSAttributedString(attributedString: modifiedString)
}
}
extension NSMutableAttributedString {
public func trimCharacters(in characterSet: CharacterSet) {
var range = (string as NSString).rangeOfCharacter(from: characterSet)
// Trim leading characters from character set.
while range.length != 0 && range.location == 0 {
replaceCharacters(in: range, with: "")
range = (string as NSString).rangeOfCharacter(from: characterSet)
}
// Trim trailing characters from character set.
range = (string as NSString).rangeOfCharacter(from: characterSet, options: .backwards)
while range.length != 0 && NSMaxRange(range) == length {
replaceCharacters(in: range, with: "")
range = (string as NSString).rangeOfCharacter(from: characterSet, options: .backwards)
}
}
}
- 1. Swift 3修剪字符
- 2. Swift修剪字符串
- 3. Swift中的NSAttributedString問題
- 4. Swift NSAttributedString會渲染JavaScript嗎?
- 5. Swift 3 NSAttributedString多個屬性
- 6. iOS:用Swift修剪音頻文件?
- 7. 如何從NSAttributedString創建剪貼蒙版?
- 8. 底部的文本被裁剪爲NSAttributedString
- 9. 在Swift中添加NSUnderlineStyle.PatternDash到NSAttributedString?
- 10. 如何從NSAttributedString swift中刪除屬性?
- 11. NSAttributedString沒有按時渲染 - Swift
- 12. 修剪功能沒有真正修剪
- 13. PHP修剪不修剪的空間
- 14. 保持撤消修改,束縛,NSAttributedString
- 15. Effiecient方式修剪數組
- 16. 修剪掉串
- 17. 修剪BOLD_CLOCKLOG表
- 18. 多行修剪
- 19. 修剪文字
- 20. 修剪()FormCollection值
- 21. 修剪與FILE_IGNORE_NEW_LINES
- 22. 修剪浮動
- 23. 修剪算法
- 24. 左修剪Path.GetFileNameWithoutExtension
- 25. 修剪MySQL表
- 26. 修剪一段
- 27. 修剪串
- 28. 修剪子
- 29. 修剪rpart樹
- 30. 修剪在C#
https://github.com/ovenbits/亞歷山大/ blob/master/Sources/NSAttributedString%2BExtensions.swift?如果你在搜索引擎中尋找NSAttributedString和Trim,你有一些解決方案,他們不工作? – Larme
謝謝Larme,這個github項目真的很有幫助! –