markzzz
markzzz

Reputation: 48035

Substring a string from the end of the string

I need to remove two characters from the end of the string.

So:

string = "Hello Marco !"

must be

Hello Marco

How can I do it?

Upvotes: 34

Views: 156823

Answers (9)

Kirill Rakhman
Kirill Rakhman

Reputation: 43861

C# 8 introduced indices and ranges which allow you to write

str[^2..]

This is equivalent to

str.Substring(str.Length - 2, 2)

In fact, this is almost exactly what the compiler will generate, so there's no overhead.

Note that you will get an ArgumentOutOfRangeException if the range isn't within the string.

Upvotes: 21

Armen Tsirunyan
Armen Tsirunyan

Reputation: 133112

s = s.Substring(0, Math.Max(0, s.Length - 2))

to include the case where the length is less than 2

Upvotes: 33

Øyvind Bråthen
Øyvind Bråthen

Reputation: 60744

What about

string s = "Hello Marco !";
s = s.Substring(0, s.Length - 2);

Upvotes: 8

Alex Mendez
Alex Mendez

Reputation: 5150

You can do:

string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);

Upvotes: 52

Felice Pollano
Felice Pollano

Reputation: 33272

I will trim the end for unwanted characters:

s = s.TrimEnd(' ', '!');

To ensure it works even with more spaces. Or better if you want to ensure it works always, since the input text seems to come from the user:

Regex r = new Regex(@"(?'purged'(\w|\s)+\w)");
Match m = r.Match("Hello Marco   !!");
if (m.Success)
{
    string result = m.Groups["purged"].Value;
}

With this you are safer. A purge based on the fact the last two characters has to be removed is too weak.

Upvotes: 5

all2neat
all2neat

Reputation: 125

If it's an unknown amount of strings you could trim off the last character by doing s = s.TrimEnd('','!').Trim();

Have you considered using a regular expression? If you only want to allow alpha numeric characters you can use regex to replace the symbols, What if instead of a ! you get a %?

Upvotes: 2

Cody Gray
Cody Gray

Reputation: 245001

Did you check the MSDN documentation (or IntelliSense)? How about the String.Substring method?

You can get the length using the Length property, subtract two from this, and return the substring from the beginning to 2 characters from the end. For example:

string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);

Upvotes: 2

bdparrish
bdparrish

Reputation: 2774

string s = "Hello Marco !";
s = s.Remove(s.length - 2, 2);

Upvotes: 1

Yuck
Yuck

Reputation: 50855

Try this:

var s = "Hello Marco !";

var corrected = s.Substring(0, s.Length - 2);

Upvotes: 1

Related Questions