2010-08-26 85 views
104

我有一個字符串說修剪字符串中的最後一個字符

"Hello! world!" 

我想做一個微調或刪除取出!關閉世界但不是關閉你好。

+1

也許是超出你的要求,但我可以問你花一點時間來考慮使用我提出的正則表達式? – 2010-08-26 11:01:38

+0

的[刪除字符串的最後一個字符]可能的複製(http://stackoverflow.com/questions/7901360/delete-last-char-of-string) – 2016-08-25 16:03:50

回答

202
"Hello! world!".TrimEnd('!'); 

read more

編輯:

我這種類型的相當多每個人都建議刪除給出的最後一個字符的問題已經注意到了串。但是這不符合修剪方法的定義。

修剪 - 刪除從 開始和結束該實例的 空格都出現。

MSDN-Trim

根據這個定義字符串只去掉最後一個字符是不好解決。

所以,如果我們要「剪掉字符串最後一個字符:」我們應該做這樣的事

例如,作爲擴展方法:

public static class MyExtensions 
{ 
    public static string TrimLastCharacter(this String str) 
    { 
    if(String.IsNullOrEmpty(str)){ 
     return str; 
    } else { 
     return str.TrimEnd(str[str.Length - 1]); 
    } 
    } 
} 

注意,如果你想刪除的所有字符相同的值即(!!!!)上面的方法刪除了所有存在的'!'如果你想刪除

else { return str.Remove(str.Length - 1); } 
+1

只要您始終知道要從字符串末尾刪除的字符,這樣會更好。 – 2010-08-26 08:41:11

+0

正如他的sed「出了‘!’」,但如果我們不知道我們應該使用,'S = s.TrimEnd(S [s.Length - 1]);',從字符串刪除最後一個字符不完整填寫修剪的定義。 – 2010-08-26 09:41:40

+0

您好Vash,您對使用RegEx的解決方案有什麼看法?它符合Thqr的要求,可以刪除'!'來自任何「世界」的字符!表達式,放在表達式的任何位置,只需一個代碼行。 – 2010-08-26 10:59:54

51
String withoutLast = yourString.Substring(0,(yourString.Length - 1)); 
+10

只要確保yourString至少包含1個字符。 – 2010-08-26 08:25:02

+0

也確保你的字符串總是以你想刪除的字符結束EG:「Hello!World」最終會成爲「Hello!Worl」。 – 2013-07-18 21:04:08

4
string helloOriginal = "Hello! World!"; 
string newString = helloOriginal.Substring(0,helloOriginal.LastIndexOf('!')); 
2
string s1 = "Hello! world!" 
string s2 = s1.Substring(0, s1.Length - 1); 
Console.WriteLine(s1); 
Console.WriteLine(s2); 
5
 string s1 = "Hello! world!"; 
     string s2 = s1.Trim('!'); 
+0

注意,這也將刪除‘!’從字符串的開頭開始... – contactmatt 2017-04-25 22:03:00

+0

如何使用endswith屬性?可以在這裏使用嗎? – SaMolPP 2017-05-25 10:01:06

-3

:從字符串的結尾, 但如果你只想刪除最後一個字符,你應該用這個「!」從一個特定的表達(在你的情況下,「世界」)字符,那麼你可以使用這個正則表達式

string input = "Hello! world!"; 

string output = Regex.Replace(input, "(world)!", "$1", RegexOptions.Multiline | RegexOptions.Singleline); 

// result: "Hello! world" 

1 $特殊字符包含所有匹配的「世界」的表情,並用它來取代原來的「世界!」表達

1

你也可以使用:

public static class Extensions 
{ 

     public static string RemovePrefix(this string o, string prefix) 
     { 
      if (prefix == null) return o; 
      return !o.StartsWith(prefix) ? o : o.Remove(0, prefix.Length); 
     } 

     public static string RemoveSuffix(this string o, string suffix) 
     { 
      if(suffix == null) return o; 
      return !o.EndsWith(suffix) ? o : o.Remove(o.Length - suffix.Length, suffix.Length); 
     } 

    } 
0

我只是因爲我已經在使用它內嵌了編寫使用TrimEnd延伸的路徑,並很高興與它... 即:

static class Extensions 
{ 
     public static string RemoveLastChars(this String text, string suffix) 
     {    
      char[] trailingChars = suffix.ToCharArray(); 

      if (suffix == null) return text; 
      return text.TrimEnd(trailingChars); 
     } 

} 

確保您在使用靜態類的類的命名空間; P和用法是:

string _ManagedLocationsOLAP = string.Empty; 
_ManagedLocationsOLAP = _validManagedLocationIDs.RemoveLastChars(",");   
4

的從一個字符串修整最後字符的另一個例子:

string outputText = inputText.Remove(inputText.Length - 1, 1); 

您可以將其放入擴展方法,並防止空字符串等。

7
if (yourString.Length > 1) 
    withoutLast = yourString.Substring(0, yourString.Length - 1); 

if (yourString.Length > 1) 
    withoutLast = yourString.TrimEnd().Substring(0, yourString.Length - 1); 

...如果你想刪除從年底非空白字符。

+7

我贊成只是爲了抵消downvote而沒有評論。當人們這樣做時,恨它。 – 2013-08-14 16:14:37

+1

它可能是因爲有沒有'TrimEnd()'方法,如果有它可以使後續的'Substring(..)'調用在短字符串上失敗。 – Rory 2015-11-03 01:28:08

1

試試這個:

return((str).Remove(str.Length-1));