如何修剪NSString中的空白(空)行?

时间:2014-07-18 16:53:25

标签: ios objective-c

我有textView,用户可以在新行中添加文本。但是当用户输入多个新行并且没有输入任何文本时,我想跳过所有那一行,只使用一个新行。

我有如下的字符串。

Hello,



How r u?

我想要一个像这样的字符串

Hello
How r u?

我试过这个但没有工作

strContects=[strContects stringByReplacingOccurrencesOfString:@"\n\n" withString:@"\n"];

我该怎么做?

希望你明白吗?

2 个答案:

答案 0 :(得分:4)

您可以通过遵循正则表达式代码

来替换多次出现的多个换行符,并将其替换为单个换行符
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\n+" options:0 error:NULL];
NSString *newString = [regex stringByReplacingMatchesInString:myString options:0 range:NSMakeRange(0, [myString length]) withTemplate:@"\n"];

这将打印

您好,

你好吗? //在新行中(所有\ n省略单个\ n)

答案 1 :(得分:1)

如果此处的目标是删除所有空行 - 而不仅仅是合并多个换行符 - 那么值得注意的是接受的答案不会删除字符串中的初始空行;例如" \ n你好......"

更多涉及,但尝试此类别:

- (NSString*)stringByRemovingBlankLines
{
    NSScanner *scan = [NSScanner scannerWithString:self];
    NSMutableString *string = NSMutableString.new;
    while (!scan.isAtEnd) {
        [scan scanCharactersFromSet:NSCharacterSet.newlineCharacterSet intoString:NULL];
        NSString *line = nil;
        [scan scanUpToCharactersFromSet:NSCharacterSet.newlineCharacterSet intoString:&line];
        if (line) [string appendFormat:@"%@\n",line];
    }
    if (string.length) [string deleteCharactersInRange:(NSRange){string.length-1,1}]; // drop last '\n'
    return string;
}

(顺便说一句 - 这也可以处理其他类型的“换行符”字符,而接受的答案却没有。这个没有被要求,但是它出现在评论中)