Coder Perfect

In C#, how do I extract the last four characters from a string?

Problem

Let’s say I have a string:

"34234234d124"

I’m looking for the string’s last four letters, which are “d124.” SubString is an option, but it requires a few lines of code, including naming a variable.

Is it possible to get this outcome in C# with just one expression?

Asked by KentZhou

Solution #1

mystring.Substring(Math.Max(0, mystring.Length - 4)); //how many lines is this?

If you’re certain your string is at least four inches long, it’s even shorter:

mystring.Substring(mystring.Length - 4);

Answered by Armen Tsirunyan

Solution #2

You can use an extension method:

public static class StringExtension
{
    public static string GetLast(this string source, int tail_length)
    {
       if(tail_length >= source.Length)
          return source;
       return source.Substring(source.Length - tail_length);
    }
}

And then call:

string mystring = "34234234d124";
string res = mystring.GetLast(4);

Answered by Stecya

Solution #3

All you need to do now is…

String result = mystring.Substring(mystring.Length - 4);

Answered by thestar

Solution #4

C# 8.0 eventually makes this simple in 2020:

> "C# 8.0 finally makes this easy"[^4..]
"easy"

See Indices and ranges for more information on how to slice arrays.

Answered by Colonel Panic

Solution #5

So, I realize this is an old article, but why are we recreating code that the framework already provides?

I recommend that you include a reference to the framework DLL “Microsoft.VisualBasic” in your code.

using Microsoft.VisualBasic;
//...

string value = Strings.Right("34234234d124", 4);

Answered by RJ Programmer

Post is based on https://stackoverflow.com/questions/6413572/how-do-i-get-the-last-four-characters-from-a-string-in-c