Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove last characters from a string in C#. An elegant way?

Tags:

string

c#

.net

People also ask

How do I remove the last 3 characters from a string?

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.

How do you get rid of the first and last character in a string C?

Removing the first and last character In the example above, we removed the first character of a string by changing the starting point of a string to index position 1, then we removed the last character by setting its value to \0 . In C \0 means the ending of a string.


You can actually just use the Remove overload that takes one parameter:

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

However, if you're trying to avoid hard coding the length, you can use:

str = str.Remove(str.IndexOf(','));

Perhaps this:

str = str.Split(",").First();

This will return to you a string excluding everything after the comma

str = str.Substring(0, str.IndexOf(','));

Of course, this assumes your string actually has a comma with decimals. The above code will fail if it doesn't. You'd want to do more checks:

commaPos = str.IndexOf(',');
if(commaPos != -1)
    str = str.Substring(0, commaPos)

I'm assuming you're working with a string to begin with. Ideally, if you're working with a number to begin with, like a float or double, you could just cast it to an int, then do myInt.ToString() like:

myInt = (int)double.Parse(myString)

This parses the double using the current culture (here in the US, we use . for decimal points). However, this again assumes that your input string is can be parsed.


String.Format("{0:0}", 123.4567);      // "123"

If your initial value is a decimal into a string, you will need to convert

String.Format("{0:0}", double.Parse("3.5", CultureInfo.InvariantCulture))  //3.5

In this example, I choose Invariant culture but you could use the one you want.

I prefer using the Formatting function because you never know if the decimal may contain 2 or 3 leading number in the future.

Edit: You can also use Truncate to remove all after the , or .

Console.WriteLine(Decimal.Truncate(Convert.ToDecimal("3,5")));