string.substring vs string.take

c#, substring

Solution

If you find yourself doing this a lot, why not write an extension method?

For example:

using System;

namespace Demo
{
    public static class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("123456789".Left(5));
            Console.WriteLine("123456789".Left(15));
        }
    }

    public static class StringExt
    {
        public static string Left(this string @this, int count)
        {
            if (@this.Length <= count)
            {
                return @this;
            }
            else
            {
                return @this.Substring(0, count);
            }
        }
    }
}

Problem

If you want to only take a part of a string, the substring method is mostly used. This has a drawback that you must first test on the length of the string to avoid errors. For example you want to save data into a database, and want to cut off a value to the first 20 characters. If you do temp.substring(0,20) but temp only holds 10 chars, an exception is thrown. There are 2 solutions that I see : - test on the length, and do the substring if needed use the extension method Take ``` string temp = "1234567890"; var data= new string( temp.Take(20).ToArray()); --> data now holds "1234657890" ``` Is there any disadvantage in terms of speed or memory use , when one uses the Take method. The benefit is that you do not have to write all those if statements.

Original source

Related problems