Click here to Skip to main content
14,935,597 members
Articles / Programming Languages / C#
Alternative
Tip/Trick
Posted 10 Jan 2012

Tagged as

Stats

8.6K views

Counting Lines in a String

Rate me:
Please Sign up or sign in to vote.
5.00/5 (2 votes)
10 Jan 2012CPOL
This is an alternative to "Counting Lines in a String".

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 you can't avoid it, I would consider:

C#
static long LinesCount(string s) {return s.Length-s.Replace("\n","").Length;}

which was in one of my very first CP posts, a couple of years ago.

:)

License

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

Share

About the Author

Luc Pattyn
Software Developer (Senior)
Belgium Belgium
I am an engineer with a background in electronics, software and mathematics.

I develop technical software, both for embedded systems and for desktop equipment. This includes operating systems, communication software, local networks, image processing, machine control, automation, etc.

I have been using all kinds of microcontrollers and microprocessors (Intel 4004/8080/8051/80386/Pentium, Motorola 680x/680x0/ColdFire/PowerPC, Microchip PIC, Altera NIOS, and many more), lots of programming languages (all relevant assemblers, Fortran, Basic, C, Java, C#, and many more), and different operating systems (both proprietary and commercial).

For desktop applications and general development tools I have been using both UNIX systems and Mac/MacOS for many years, but I have switched to x86-based PCs with Windows, Visual Studio and the .NET Framework several years ago.

I specialize in:
- cross-platform development (making software that runs on diverse hardware/OS combinations)
- instruction set simulation
- improving software performance, i.e. making sure the software runs the job at hand in as short a time as possible on the given hardware. This entails algorithm selection, implementation design, accurate measurements, code optimisation, and sometimes implementing virtual machines, applying SIMD technology (such as MMX/SSE), and more.

Comments and Discussions

 
GeneralActually I'm not surprised other alternatives are faster; it... Pin
Luc Pattyn10-Jan-12 21:34
sitebuilderLuc Pattyn10-Jan-12 21:34 
GeneralRe: Accessing the Length property doesn't scan the string; the l... Pin
Richard Deeming24-Jan-12 5:51
mveRichard Deeming24-Jan-12 5:51 
GeneralI agree - I just load a large text file to give the timing c... Pin
OriginalGriff10-Jan-12 21:17
mveOriginalGriff10-Jan-12 21:17 
I agree - I just load a large text file to give the timing comparisons some work to do - if I set up a five line string for testing, it is going to be difficult to time accurately. (In the app itself, it will be ten or so lines in memory, and I am just checking that there are a a reasonable number before committing then to the printer and wasting envelopes. Normally I would count lines as they are assembled, but here they come pre-packaged.)
If you look at LinesCount7 in the list, it uses your replace, and is nearly seven times slower than the original brute-force-and-ignorance method I tried! Laugh | :laugh:

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.