Click here to Skip to main content
Click here to Skip to main content

Counting lines in a string

By , 17 Jan 2012

Alternatives

Members may post updates or alternatives to this current article in order to show different approaches or add new features.

9 Jan 2012  
Grasshopper.iics
 
Can't we have something as below?int n=(s.Split(new char[]{'\n'})).Length;where n is the number of lines?
10 Jan 2012  
Luc Pattyn
 
You shouldn't be working with huge strings at all.If this represents a file's content, read it using File.ReadAllLines() and take the array's Length.Otherwise, count the lines while you collect the data, not afterwards.Dealing with a huge string isn't doing the caches any favors.And if...
17 Jan 2012  
Jon Bellamy
 
Again, going with other people's comments about memory, how about using a Streamreader? (I haven't tested the timings (or code) but from memory..This should be fast (and memory efficient)...at least in my experience.StreamReader sr = new StreamReader("Put file here");Int32 cnt =...
9 Jan 2012  
akemper
 
I've compared your favorite with seven alternatives:static long LinesCount(string s) { long count = 0; int position = 0; while ((position = s.IndexOf('\n', position)) != -1) { count++; position++; // Skip this occurance! } ...
18 Jun 2012  
OriginalGriff 8 alternatives  
 
It seems like an obvious requirement, but the .NET framework will not count occurrences of a character in a string. It's easy to do, but which way is the quickest?
11 Jan 2012  
George Swan
 
How about using the extension method: return s.Count(c => (c == '\n'));
17 Jan 2012  
Roman Shero
 
Hello! Great tip!What do you think about this extension method:public static class StringExtension{ public unsafe static long LineCount(this string s) { long lineCount = 1; fixed (char* pchar = s) { char* p = pchar; for (; *p...
28 Feb 2012  
Andreas Gieriet
 
Great analysis!I found out that Regex can be accelerated by a factor of about two.Instead of new Regex(@"\n", RegexOptions.Compiled|RegexOptions.Multiline);you can speed up by using:new Regex(@"^.*?$", RegexOptions.Compiled|RegexOptions.Multiline);But admittedly, nothing beats...

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Greg Baryza
Program Manager InterSystems Corporation
United States United States
Greg has over 40 years of experience in software and hardware development. He has managed application, operating
systems, compiler, and database development groups; run multi-product documentation teams; directed customer service organizations; project-managed multi-million dollar projects; and directed product management and marketing operations groups. His experience includes liaison responsibilities with international organizations, particularly in Japan.

| | Privacy | Mobile
Web03 | 2.8.140421.2 | Last Updated 17 Jan 2012
Article Copyright 2012 by Greg Baryza
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid