修剪string中的最后一个字符

我有一个string说

"Hello! world!" 

我想做一个修剪或删除取出! closures世界但不是closures你好。

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

阅读更多

编辑:

我在这类问题中已经注意到,所有人都build议删除给定string的最后一个字符。 但是这不符合Trim方法的定义。

修剪 – 从此实例的开头和结尾删除所有出现的空格字符。

MSDN剪裁

在这个定义下,只删除string中的最后一个字符是不好的解

所以如果我们要“修整string中的最后一个字符”,我们应该这样做

作为扩展方法的示例:

 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]); } } } 

注意,如果你想删除所有相同的值的字符,即(!!!!)上面的方法删除所有存在的'!' 从string的末尾开始,但是如果你只想删除最后一个字符,你应该使用这个:

 else { return str.Remove(str.Length - 1); } 
 String withoutLast = yourString.Substring(0,(yourString.Length - 1)); 
 if (yourString.Length > 1) withoutLast = yourString.Substring(0, yourString.Length - 1); 

要么

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

…如果你想从最后删除一个非空白字符。

  string s1 = "Hello! world!"; string s2 = s1.Trim('!'); 
 string helloOriginal = "Hello! World!"; string newString = helloOriginal.Substring(0,helloOriginal.LastIndexOf('!')); 

修剪string中最后一个字符的另一个示例:

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

你可以把它放到一个扩展方法,并防止它的空string等

 string s1 = "Hello! world!" string s2 = s1.Substring(0, s1.Length - 1); Console.WriteLine(s1); Console.WriteLine(s2); 

你也可以使用这个:

 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); } } 

尝试这个:

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

我使用TrimEnd写了一个扩展的path,因为我已经使用它内联,并且对它感到满意…即:

 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(","); 

如果你想删除'!' 字符从一个特定的expression式(在你的情况“世界”),那么你可以使用这个正则expression式

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

$ 1特殊字符包含所有匹配的“世界”expression式,并用它来代替原来的“世界”! expression