Reputation: 14145
I want to remove last three characters from a string:
string myString = "abcdxxx";
Note that the string is dynamic data.
Upvotes: 178
Views: 475653
Reputation: 2994
Here is a generic and ready to use method. It takes char count to trim from the end, uses C# 8.0 Range operator and checks for invalid input:
static string? TrimEnd(string? text, int charCount)
{
if (text == null || text.Length <= charCount || charCount < 0)
{
return null;
}
return text[..^charCount];
}
Usage:
string myString = "abcdxxx";
string? result = TrimEnd(myString, 3);
// Here result is "abcd"
Upvotes: 0
Reputation: 21
You can call the Remove method and pass the last 3 characters
str.Substring(str.Length-3)
Complete code can be
str.Remove(str.Substring(str.Length-3));
Upvotes: -1
Reputation: 4379
If you're working in C# 8 or later, you can use "ranges":
string myString = "abcdxxx";
string trimmed = myString[..^3]; // "abcd"
More examples:
string test = "0123456789", s;
char c;
c = test[^3]; // '7'
s = test[0..^3]; // "0123456"
s = test[..^3]; // "0123456"
s = test[2..^3]; // "23456"
s = test[2..7]; // "23456"
//c = test[^12]; // IndexOutOfRangeException
//s = test[8..^3]; // ArgumentOutOfRangeException
s = test[7..^3]; // string.Empty
Upvotes: 13
Reputation: 1701
The new C# 8.0 range operator can be a great shortcut to achieve this.
Example #1 (to answer the question):
string myString = "abcdxxx";
var shortenedString = myString[0..^3]
System.Console.WriteLine(shortenedString);
// Results: abcd
Example #2 (to show you how awesome range operators are):
string s = "FooBar99";
// If the last 2 characters of the string are 99 then change to 98
s = s[^2..] == "99" ? s[0..^2] + "98" : s;
System.Console.WriteLine(s);
// Results: FooBar98
Upvotes: 22
Reputation: 2283
Easy. text = text.remove(text.length - 3)
. I subtracted 3 because the Remove
function removes all items from that index to the end of the string which is text.length
. So if I subtract 3 then I get the string with 3 characters removed from it.
You can generalize this to removing a
characters from the end of the string, like this:
text = text.remove(text.length - a)
So what I did was the same logic. The remove
function removes all items from its inside to the end of the string which is the length of the text. So if I subtract a
from the length of the string that will give me the string with a
characters removed.
So it doesn't just work for 3, it works for all positive integers, except if the length of the string is less than or equal to a
, in that case it will return a negative number or 0.
Upvotes: 3
Reputation: 604
items.Remove(items.Length - 3)
string.Remove()
removes all items from that index to the end. items.length - 3
gets the index 3 chars from the end
Upvotes: 1
Reputation: 148120
read last 3 characters from string [Initially asked question]
You can use string.Substring and give it the starting index and it will get the substring starting from given index till end.
myString.Substring(myString.Length-3)
Retrieves a substring from this instance. The substring starts at a specified character position. MSDN
Edit, for updated post
Remove last 3 characters from string [Updated question]
To remove the last three characters from the string you can use string.Substring(Int32, Int32) and give it the starting index 0
and end index three less than the string length. It will get the substring before last three characters.
myString = myString.Substring(0, myString.Length-3);
String.Substring Method (Int32, Int32)
Retrieves a substring from this instance. The substring starts at a specified character position and has a specified length.
You can also using String.Remove(Int32) method to remove the last three characters by passing start index as length - 3, it will remove from this point to end of string.
myString = myString.Remove(myString.Length-3)
Returns a new string in which all the characters in the current instance, beginning at a specified position and continuing through the last position, have been deleted
Upvotes: 331
Reputation: 2868
Probably not exactly what you're looking for since you say it's "dynamic data" but given your example string, this also works:
? "abcdxxx".TrimEnd('x');
"abc"
Upvotes: 6
Reputation: 481
Remove the last characters from a string
TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)
.Text.Remove(10)
// used to remove text starting from index 10 to end
Upvotes: 1
Reputation: 116468
You can use String.Remove
to delete from a specified position to the end of the string.
myString = myString.Remove(myString.Length - 3);
Upvotes: 6
Reputation: 510
I read through all these, but wanted something a bit more elegant. Just to remove a certain number of characters from the end of a string:
string.Concat("hello".Reverse().Skip(3).Reverse());
output:
"he"
Upvotes: 19
Reputation: 101
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
Upvotes: 8
Reputation: 3261
string myString = "abcdxxx";
if (myString.Length<3)
return;
string newString=myString.Remove(myString.Length - 3, 3);
Upvotes: 2
Reputation: 9074
myString.Substring(myString.Length - 3, 3)
Here are examples on substring.>>
http://www.dotnetperls.com/substring
Refer those.
Upvotes: 2