Search code examples
objective-ccocoanewlineenumeration

How to count the number of lines in an Objective-C string (NSString)?


I want to count the lines in an NSString in Objective-C.

  NSInteger lineNum = 0;
  NSString *string = @"abcde\nfghijk\nlmnopq\nrstu";
  NSInteger length = [string length];
  NSRange range = NSMakeRange(0, length);
  while (range.location < length) {
      range = [string lineRangeForRange:NSMakeRange(range.location, 0)];
      range.location = NSMaxRange(range);
      lineNum += 1;
  }

Is there an easier way?


Solution

  • well, a not very efficient, but nice(ish) looking way is

    NSString *string = @"abcde\nfghijk\nlmnopq\nrstu";
    NSInteger length = [[string componentsSeparatedByCharactersInSet:
                                    [NSCharacterSet newlineCharacterSet]] count];
    

    Swift 4:

    myString.components(separatedBy: .newlines)