Обрезать последний символ из строки



У меня есть строка, скажем



"Hello! world!" 


Я хочу сделать обрезку или удалить, чтобы вынуть ! с планеты, но не с привета.

570   12  

12 ответов:

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

подробнее

EDIT:

что я заметил в этом типе вопросов, которые довольно все предлагают, чтобы удалить последний символ данной строки. Но это не соответствует определению метода Trim.

Trim-удаляет все вхождения пробельные символы из начало и конец этого экземпляра.

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); }
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 helloOriginal = "Hello! World!";
string newString = helloOriginal.Substring(0,helloOriginal.LastIndexOf('!'));
        string s1 = "Hello! world!";
        string s2 = s1.Trim('!');

еще один пример обрезки 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);
        }

    }

попробуйте это:

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

Я пошел по пути написания расширения с помощью 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(",");          

очень легко и просто:

str = str.Снять( ул.Длина - 1 );

Если вы хотите удалить!'персонаж из определенного выражения("мир" в вашем случае), то вы можете использовать это регулярное выражение

string input = "Hello! world!";

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

// result: "Hello! world"

специальный символ $1 содержит все соответствующие выражения "мир", и он используется для замены исходного " мир!"выражение

Comments

    Ничего не найдено.