Alex Rivera | Logout

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

Asked 2009-07-06T05:14:14.380
27

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?

Edit
Report

1 Answer

38

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)
answered 2009-07-06T05:32:34.950

Your Answer