Заменить символ в NSMutableAttributedString

Это работает для обычного NSString:

NSString *newString = [myString stringByReplacingOccurrencesOfString:@"," withString:@""];

Но нет такого метода для NSMutableAttributedString, Как я могу удалить все экземпляры запятой в NSMutableAttributedString?

5 ответов

let attrString = NSMutableAttributedString(string: "Hello <b>friend<b>")

attrString.mutableString.replaceOccurrencesOfString("<b>", withString: "", options: NSStringCompareOptions.CaseInsensitiveSearch, range: NSRange(location: 0, length: attrString.length))

Попробуй это:)

NSString *newString= "I want to ,show, you how to achieve this";
NSMutableAttributedString *displayText = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",newString]];
[[displayText mutableString] replaceOccurrencesOfString:@"," withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, displayText.string.length)];

Сделайте это, прежде чем создавать атрибутивную строку, если можете, или в зависимости от того, как вы ее используете. Если вы не можете, то вы можете использовать replaceCharactersInRange:withString: (или же replaceCharactersInRange:withAttributedString:), но вам нужно знать диапазон, поэтому вам нужно искать и повторять себя.

Код можно применить из моего ответа здесь:

NSAttributedString *attributedString = ...;
NSAttributedString *anotherAttributedString = ...; //the string or characters which will replace

while ([attributedString.mutableString containsString:@"replace"]) {
        NSRange range = [attributedString.mutableString rangeOfString:@"replace"];
        [attributedString replaceCharactersInRange:range  withAttributedString:anotherAttributedString];
    }

Вы можете инициализировать приписанную строку с очищенной строкой с разработанным init. Нет?

Другие вопросы по тегам