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


122

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

string myString = "abcdxxx"; 

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


1
阅读最后3个字符=一件事,删除最后3个字符=另一件事。哪一个?
基琳·约翰斯通

Answers:


234

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

您可以使用string.Substring为其提供起始索引,它将获得从给定索引开始直至结束的子字符串。

myString.Substring(myString.Length-3)

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

编辑,以更新帖子

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

要从字符串中删除最后三个字符,可以使用string.Substring(Int32,Int32)并为其指定起始索引0和终止索引,使其比字符串length少三个。它将在最后三个字符之前获取子字符串。

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)

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


13
这不是答案
吹牛

21
感谢@braks,最初提出的问题是“从字符串中读取最后3个字符”,稍后进行了编辑,但我不知道,请参阅问题编辑历史记录。您的评论帮助我纠正了在编辑问题后出错的答案。
阿迪尔


13

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

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

输出:

"he"

7
由于不需要字符串的长度,因此这是“创造性的”,但是反向操作可能会更昂贵。
Aleksandar

4
反转字符串绝对比计数其字符要昂贵。需要构造一个完整的新字符串,然后将原始字符串复制到该字符串,然后需要对原始字符串进行垃圾回收。
马特·格雷戈里

@MattGregory字符串是不可变的:Remove,Substring,任何字符串函数都会生成一个新字符串。覆盖原始指针总是会导致垃圾回收。不过,这样做仍然较慢,因为Enumerable.Reverse将字符串char[]缓冲到中,然后缓冲到char[]短了3 的新字符串中,然后生成一个新字符串string(内部带有另一个char[])。更好的方法是new string("hello".Reverse().Skip(3)),或只编写自己的AllBut(this string in, int i)使用Substring 的字符串扩展功能。
Wolfzoon '18年

@MattGregory甚至没有“计算”字符串的字符,而是Length存储了字符串。
Wolfzoon '18年

1
现在我们也有.SkipLast(n)。无需撤消任何操作。"hello".SkipLast(3)"he"
AjitZero



5

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

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

4

由于您说的是“动态数据”,因此可能与您要查找的内容不完全相同,但是在给出示例字符串的情况下,这也适用:

? "abcdxxx".TrimEnd('x');
"abc"



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

1

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

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

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


1

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

例:

var shortenedString = myString[0..^1]

0
items.Remove(items.Length - 3)

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


0

简单。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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.