2017-12-05 1 views
0

Ich habe Text in meiner attributierten Zeichenfolge, die ich entfernen möchte. Wie kann ich das tun, ohne die Attribute zu entfernen?Teil der attributierten Zeichenfolge entfernen, ohne Attribute zu entfernen

Was ich versucht habe:

ich diesen Beitrag gefunden auf SO (Replace substring of NSAttributedString with another NSAttributedString), in dem OP für die entsprechende Methode zu NSString des stringByReplacingOccurrencesOfString suchen: withString: für NSAttributedString. Ich bin neu in Swift, daher konnte ich die angenommene Antwort nicht verstehen.

Ich ging zu den anderen Antworten über und wenn sie nicht in Ziel c geschrieben waren, waren es Methoden, die ich nicht kompilieren konnte.

Das ist so weit wie ich bekommen konnte. Ich konnte keine anderen Beiträge zu SO finden, die eine Lösung für mein Problem bieten.

+1

Haben Sie in der Dokumentation gesucht 'NSMutableAttributedString'? – rmaddy

+0

Ich habe aber kann nicht herausfinden, ob was ich versuche zu tun ist möglich. –

+0

Aktualisieren Sie Ihre Frage mit dem, was Sie bisher versucht haben. – rmaddy

Antwort

1

Um einen Teil einer attributierten Zeichenfolge zu entfernen, müssen Sie die Methode NSMutableAttributedString deleteCharacters(in:) verwenden.

Hier ist ein Beispielcode:

// Create some attributes string 
let attrs: [NSAttributedStringKey: Any] = [ .foregroundColor: UIColor.red, .font: UIFont.systemFont(ofSize: 24) ] 
let attrStr = NSAttributedString(string: "Hello there", attributes: attrs) 
print(attrStr) 

// Create a mutable attributed string, find the range to remove and remove it 
let mutStr = attrStr.mutableCopy() as! NSMutableAttributedString 
let range = (mutStr.string as NSString).range(of: " there") 
mutStr.deleteCharacters(in: range) 
print(mutStr) 

Ausgang:

 
Hello there{ 
    NSColor = "UIExtendedSRGBColorSpace 1 0 0 1"; 
    NSFont = "<UICTFont: 0x7f989541d6c0> font-family: \".SFUIDisplay\"; font-weight: normal; font-style: normal; font-size: 24.00pt"; 
} 
Hello{ 
    NSColor = "UIExtendedSRGBColorSpace 1 0 0 1"; 
    NSFont = "<UICTFont: 0x7f989541d6c0> font-family: \".SFUIDisplay\"; font-weight: normal; font-style: normal; font-size: 24.00pt"; 
} 
+0

Das hat perfekt funktioniert. Vielen Dank! –

Verwandte Themen