如何从 NSMutableAttributedString 中删除 \t?

How to remove \t from NSMutableAttributedString?

我有 NSMutableAttributedString,其字符串包含制表符。我想删除它

示例 NSstring

Hello text
    •   Text1
    •   Text2
    •   Text3

我尝试了下面的代码,但它没有按预期工作。

NSMutableAttributedString *displayText;
NSCharacterSet *charSet = [NSCharacterSet whitespaceCharacterSet];
NSRange range           = [displayText.string rangeOfCharacterFromSet:charSet];

while (range.length != 0 && NSMaxRange(range) == displayText.length)
{
    [displayText replaceCharactersInRange:range withString:@""];
    range = [displayText.string rangeOfCharacterFromSet:charSet];
}

// Trim trailing whitespace and newlines.
range = [displayText.string rangeOfCharacterFromSet:charSet options:NSBackwardsSearch];
while (range.length != 0 && NSMaxRange(range) == displayText.length)
{
    [displayText replaceCharactersInRange:range withString:EMPTY_STRING];
    range = [displayText.string rangeOfCharacterFromSet:charSet options:NSBackwardsSearch];
}

我得到的输出是

Hellotext
•Text1
•Text2
•Text3

实际输出应该是这样的

Hello text
 • Text1
 • Text2
 • Text3

有人可以帮我解决这个问题吗? 提前致谢。

+whitespaceCharacterSet 包括空格和制表符。如果您只想匹配标签,请创建一个自定义集:

NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:@"\t"];

要使用只有 tab 个字符的字符集,您可以使用:

NSMutableCharacterSet *charSet = [NSMutableCharacterSet whitespaceCharacterSet];
[charSet removeCharactersInString:@" "];