Подтвердить что ты не робот

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

У меня строка:

"Hello! world!" 

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

4b9b3361

Ответ 1

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

подробнее

EDIT:

Что я заметил в этом типе вопросов, которые все считают предлагаемым для удаления последней char данной строки. Но это не соответствует определению метода 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]);
     }
  }
}

Примечание, если вы хотите удалить все символы с одинаковым значением i.e(!!!!), метод выше удаляет все сущности '!' от конца строки, но если вы хотите удалить только последний символ, вы должны использовать это:

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

Ответ 2

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

Ответ 3

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

или

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

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

Ответ 4

        string s1 = "Hello! world!";
        string s2 = s1.Trim('!');

Ответ 5

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

Ответ 6

Другой пример обрезки последнего символа из строки:

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

Вы можете поместить его в метод расширения и предотвратить его из нулевой строки и т.д.

Ответ 7

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

Ответ 8

Попробуйте следующее:

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

Ответ 9

вы также можете использовать это:

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

    }

Ответ 10

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

Ответ 11

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

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

Ответ 12

Слегка измененная версия @Damian LeszczyĹ „ski - Vash”, которая гарантирует удаление только определенного символа.

public static class StringExtensions
{
    public static string TrimLastCharacter(this string str, char character)
    {
        if (string.IsNullOrEmpty(str) || str[str.Length - 1] != character)
        {
            return str;
        }
        return str.Substring(0, str.Length - 1);
    }
}

Ответ 13

Пример класса Extension для упрощения этого:

internal static class String
{
    public static string TrimEndsCharacter(this string target, char character) => target?.TrimLeadingCharacter(character).TrimTrailingCharacter(character);
    public static string TrimLeadingCharacter(this string target, char character) => Match(target?.Substring(0, 1), character) ? target.Remove(0,1) : target;
    public static string TrimTrailingCharacter(this string target, char character) => Match(target?.Substring(target.Length - 1, 1), character) ? target.Substring(0, target.Length - 1) : target;

    private static bool Match(string value, char character) => !string.IsNullOrEmpty(value) && value[0] == character;
}

использование

"!Something!".TrimLeadingCharacter('X'); // Result '!Something!' (No Change)
"!Something!".TrimTrailingCharacter('S'); // Result '!Something!' (No Change)
"!Something!".TrimEndsCharacter('g'); // Result '!Something!' (No Change)

"!Something!".TrimLeadingCharacter('!'); // Result 'Something!' (1st Character removed)
"!Something!".TrimTrailingCharacter('!'); // Result '!Something' (Last Character removed)
"!Something!".TrimEndsCharacter('!'); // Result 'Something'  (End Characters removed)

"!!Something!!".TrimLeadingCharacter('!'); // Result '!Something!!' (Only 1st instance removed)
"!!Something!!".TrimTrailingCharacter('!'); // Result '!!Something!' (Only Last instance removed)
"!!Something!!".TrimEndsCharacter('!'); // Result '!Something!'  (Only End instances removed)

Ответ 14

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

string input = "Hello! world!";

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

// result: "Hello! world"

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