12 ответов:
"Hello! world!".TrimEnd('!');EDIT:
что я заметил в этом типе вопросов, которые довольно все предлагают, чтобы удалить последний символ данной строки. Но это не соответствует определению метода Trim.
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); }
if (yourString.Length > 1) withoutLast = yourString.Substring(0, yourString.Length - 1);или
if (yourString.Length > 1) withoutLast = yourString.TrimEnd().Substring(0, yourString.Length - 1);...в случае, если вы хотите удалить символ без пробела с конца.
string helloOriginal = "Hello! World!"; string newString = helloOriginal.Substring(0,helloOriginal.LastIndexOf('!'));
еще один пример обрезки last символ из строки:
string outputText = inputText.Remove(inputText.Length - 1, 1);вы можете поместить его в метод расширения и предотвратить его от нулевой строки и т. д.
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); } }
Я пошел по пути написания расширения с помощью TrimEnd только потому, что я уже использовал его inline и был доволен им... т. е.:
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(",");
Если вы хотите удалить!'персонаж из определенного выражения("мир" в вашем случае), то вы можете использовать это регулярное выражение
string input = "Hello! world!"; string output = Regex.Replace(input, "(world)!", "", RegexOptions.Multiline | RegexOptions.Singleline); // result: "Hello! world"специальный символ $1 содержит все соответствующие выражения "мир", и он используется для замены исходного " мир!"выражение
Comments