Diese Frage kann ein Duplikat von this one sein. Aber die Antworten funktionieren nicht für mich und ich möchte genauer sein.Ändern der Attribute von Teilzeichenfolgen in einem NSAttributedString
Ich habe eine NSString
, aber ich brauche eine NS(Mutable)AttributedString
und einige der Wörter in dieser Zeichenfolge sollte eine andere Farbe gegeben werden. Ich habe das versucht:
NSString *text = @"This is the text and i want to replace something";
NSDictionary *attributes = @ {NSForegroundColorAttributeName : [UIColor redColor]};
NSMutableAttributedString *subString = [[NSMutableAttributedString alloc] initWithString:@"AND" attributes:attributes];
NSMutableAttributedString *newText = [[NSMutableAttributedString alloc] initWithString:text];
newText = [[newText mutableString] stringByReplacingOccurrencesOfString:@"and" withString:[subString mutableString]];
Die "und" sollte Großbuchstaben ein rot sein.
Die Dokumentation besagt, dass mutableString die Attributzuordnungen beibehält. Aber mit meinem Ersetzungsding habe ich keinen attributedString mehr auf der rechten Seite der Zuweisung (in der letzten Zeile meines Code-Snippets).
Wie kann ich bekommen, was ich will? ;)
Ändern Sie zuerst die Zeichenfolge. Erstellen Sie dann einen neuen NSMutableAttributedString mit Ihrer geänderten Zeichenfolge, und legen Sie das Attribut dann als rote Farbe fest. Sie können die Zeichenfolge nicht ändern und erwarten, dass die Attribute beibehalten werden. – croyneaus4u