Home
C#
String Slice
Updated Aug 21, 2025
Dot Net Perls

String slice

A string can be sliced. To do this, we provide a Slice() extension method. By slicing a string, we extract the characters from index one to index two.

Taking a slice is essentially the same as calling Substring with 2 index values. But sometimes using a second argument of the last index is easier.

Input and output

The key thing to remember with slice is that the second argument is an end index, not a length. And we can use a negative end index to count from the end.

Slice(1, 4)    ABCDEF
               BCD
Slice(3, -2)   The morning is upon us.
               morning is upon u

Example

Here we develop a method in C# to match JavaScript. With the JavaScript slice method, you pass it the start index, which must always be 0 or higher.

And The second parameter can be any integer. When it is negative, it means you start from the end and then count backwards.
Note In JavaScript you can omit the second parameter. To duplicate this, create an overload that uses Length minus 1 as the second parameter.
Info The first character of the second test shows that the first character is a space.
Detail My interpretation is that this is correct—the space is at index 3, while "m" is index 4.
using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("ABCDEF".Slice(1, 4));
        Console.WriteLine("The morning is upon us.".Slice(3, -2));

        string s = "0123456789_";
        // These slices are valid:
        Console.WriteLine(s.Slice(0, 1));  // First char
        Console.WriteLine(s.Slice(0, 2));  // First two chars
        Console.WriteLine(s.Slice(1, 2));  // Second char
        Console.WriteLine(s.Slice(8, 11)); // Last three chars
    }
}

public static class Extensions
{
    public static string Slice(this string source, int start, int end)
    {
        // Keep this for negative end support.
        if (end < 0) 
        {
            end = source.Length + end;
        }
        // Calculate length.
        int len = end - start;
        // Return Substring of length.
        return source.Substring(start, len);
    }
}
BCD morning is upon u 0 01 1 89_

Extension notes

This is an extension method. To create an extension method, use the this-keyword as the first parameter in a static method (in a static class).

Here we implemented a Slice() method. An extension method makes the syntax clearer—slice is useful enough to justify an extension method.

Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Aug 21, 2025 (grammar).
Home
Changes
© 2007-2025 Sam Allen