2013-03-22 218 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開始的文本結束