2013-03-22 235 views
41

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

string myString = "abcdxxx"; 

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

+0

读取最后3个字符=一件事,删除最后3个字符=另一个。哪一个? – 2013-03-22 07:40:53

回答

97

阅读最后3点从字符串中的字符[开始问问题]

您可以使用string.Substring,并给它的起始索引,它会得到从子给定索引,直到年底开始。

myString.Substring(str.Length-3) 

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

编辑,为更新后

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

到最后有3个字符的字符串中删除您可以使用string.Substring(Int32, Int32),并给它开始索引0和结束索引三个小于那么字符串长度。它会在最后三个字符之前得到子字符串。

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

String.Substring Method (Int32, Int32)

检索从这个实例子。子字符串起始于 指定的字符位置并具有指定的长度。

您也可以使用String.Remove(Int32)方法通过传递开始指数长度,以便除去最后三个字符 - 3,它会从这个角度删除结束的字符串。

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

String.Remove Method (Int32)

返回其当前 实例中的所有角色,开始在指定的位置,并通过 最后一个位置继续,已被删除一个新的字符串

+1

这是不是答案 – braks 2016-01-05 02:46:27

+5

感谢@braks,最初问的问题是“从字符串中读取最后3个字符”这是后来编辑,我不知道,请参阅问题编辑历史。您的评论帮助我纠正了编辑问题后出现错误的答案。 – Adil 2016-01-05 04:55:20

13
myString = myString.Remove(myString.Length - 3, 3); 
4
myString.Remove(myString.Length-3); 
+0

'myString = myString.Remove(myString.Length - 3)'即是。 – 2017-06-09 20:42:54

2

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

1

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

myString = myString.Remove(myString.Length - 3); 
1
string myString = "abcdxxx"; 
    if (myString.Length<3) 
     return; 
    string newString=myString.Remove(myString.Length - 3, 3); 
3
string test = "abcdxxx"; 
test = test.Remove(test.Length - 3); 
//output : abcd 
7

我经历了所有这些阅读,但想要的东西多一点优雅。

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

输出:

"he" 
+1

这个是非常“有创意”的,因为它不需要字符串的长度,但是反向操作可能更昂贵。 – Casper 2017-04-07 09:12:13

+1

反转字符串肯定比计算其字符更昂贵。需要构造一个全新的字符串,然后将原始字符串复制到它,然后原始字符串需要被垃圾回收。 – 2017-04-24 16:26:41

+0

@MattGregory字符串是不可变的:Remove,Substring,任何字符串函数都会生成一个新的字符串。覆盖原始指针始终会导致垃圾回收。尽管如此,由于'Enumerable.Reverse'将字符串缓存到'char []'中,然后缓存到一个新的'char []'中,并且生成一个新的'string'(内部是另一个'炭[]')。一个更好的方法是'new string(“hello”.Reverse()。Skip(3))',或者直接编写自己的使用Substring的字符串扩展函数'AllBut(this string in,int i)'。 – Wolfzoon 2018-01-11 10:38:36

0

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

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

.Text.Remove(10) //以前只是从字符串的结尾去掉了一定数目的字符删除从索引10开始的文本结束