简体   繁体   中英

Remove the last three characters from a string

I want to remove last three characters from a string:

string myString = "abcdxxx"; 

Note that the string is dynamic data.

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)

String.Remove Method (Int32)

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

myString = myString.Remove(myString.Length - 3, 3);

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"
myString.Remove(myString.Length-3);

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

您可以使用String.Remove从指定位置删除到字符串末尾。

myString = myString.Remove(myString.Length - 3);
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd

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"

str= str.Remove(str.Length - 3);

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
myString.Substring(myString.Length - 3, 3)

Here are examples on substring.>>

http://www.dotnetperls.com/substring

Refer those.

   string myString = "abcdxxx";
   if (myString.Length<3)
      return;
   string newString=myString.Remove(myString.Length - 3, 3);

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

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.

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

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));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM