153

我想从字符串中删除最后三个字符:

string myString = "abcdxxx"; 

请注意,字符串是动态数据。

4

15 回答 15

294

从字符串中读取最后 3 个字符 [最初提出的问题]

您可以使用string.Substring并为其指定起始索引,它将获取从给定索引开始到结束的子字符串。

myString.Substring(myString.Length-3)

从此实例中检索子字符串。子字符串从指定的字符位置开始。MSDN

编辑,更新帖子

从字符串中删除最后 3 个字符 [更新问题]

要从字符串中删除最后三个字符,您可以使用string.Substring(Int32, Int32)并将其起始索引0和结束索引指定为比字符串长度小三。它将获取最后三个字符之前的子字符串。

myString = myString.Substring(0, myString.Length-3);

String.Substring 方法 (Int32, Int32)

从此实例中检索子字符串。子字符串从指定的字符位置开始并具有指定的长度。

您还可以使用String.Remove(Int32)方法通过将起始索引传递为length - 3来删除最后三个字符,它将从此点删除到字符串的结尾。

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

String.Remove 方法 (Int32)

返回一个新字符串,其中当前实例中的所有字符(从指定位置开始到最后一个位置)都已被删除

于 2013-03-22T07:25:46.233 回答
27
myString = myString.Remove(myString.Length - 3, 3);
于 2013-03-22T07:26:06.677 回答
15

我通读了所有这些,但想要一些更优雅的东西。只是从字符串末尾删除一定数量的字符:

string.Concat("hello".Reverse().Skip(3).Reverse());

输出:

"he"
于 2016-06-30T19:45:29.133 回答
12
myString.Remove(myString.Length-3);
于 2013-03-22T07:26:26.783 回答
10

新的 C# 8.0 范围运算符可以是实现这一目标的绝佳捷径。

示例#1(回答问题):

string myString = "abcdxxx";
var shortenedString = myString[0..^3]
System.Console.WriteLine(shortenedString);
// Results: abcd

示例 #2(向您展示范围运算符有多么棒):

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
于 2020-06-10T19:13:26.323 回答
7
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
于 2013-03-22T07:41:57.453 回答
6

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

myString = myString.Remove(myString.Length - 3);
于 2013-03-22T07:27:57.420 回答
5

可能不完全是您要查找的内容,因为您说它是“动态数据”,但鉴于您的示例字符串,这也有效:

? "abcdxxx".TrimEnd('x');
"abc"
于 2018-10-26T03:51:58.400 回答
3

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

于 2013-03-22T07:27:55.000 回答
2
myString.Substring(myString.Length - 3, 3)

以下是关于子字符串的示例。>>

http://www.dotnetperls.com/substring

参考那些。

于 2013-03-22T07:28:14.000 回答
2
   string myString = "abcdxxx";
   if (myString.Length<3)
      return;
   string newString=myString.Remove(myString.Length - 3, 3);
于 2013-03-22T07:29:25.130 回答
2

简单的。text = text.remove(text.length - 3). 我减去了 3,因为该Remove函数将所有项目从该索引删除到字符串的末尾,即text.length. 因此,如果我减去 3,那么我得到的字符串中删除了 3 个字符。

您可以将其概括为a从字符串末尾删除字符,如下所示:

text = text.remove(text.length - a) 

所以我做的是同样的逻辑。该remove函数将所有项目从其内部删除到字符串的末尾,即文本的长度。因此,如果我从字符串的长度中减去a,这将给我a删除字符的字符串。

所以它不仅仅适用于 3,它适用于所有正整数,除非字符串的长度小于或等于a,在这种情况下它将返回一个负数或 0。

于 2019-08-16T13:01:05.803 回答
1

从字符串中删除最后一个字符

TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)

.Text.Remove(10)// 用于删除从索引 10 开始到结束的文本

于 2018-03-09T12:28:22.887 回答
1
items.Remove(items.Length - 3)

string.Remove()从该索引中删除所有项目到最后。items.length - 3从末尾获取索引 3 个字符

于 2019-07-26T23:05:51.773 回答
1

如果您使用 C# 8 或更高版本,则可以使用“ ranges ”:

string myString = "abcdxxx";
string trimmed = myString[..^3]; // "abcd"

更多示例:

    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
于 2021-09-16T15:18:55.927 回答