Подстрока строки из конца строки

Мне нужно удалить два символа из конца строки.

Итак:

string = "Hello Marco !"

должен быть

Hello Marco

Как я могу это сделать?

Ответы

Ответ 1

Вы можете сделать:

        string str = "Hello Marco !";
        str = str.Substring(0, str.Length - 2);

Ответ 2

s = s.Substring(0, Math.Max(0, s.Length-2))

чтобы включить случай, когда длина меньше 2

Ответ 3

Что насчет

string s = "Hello Marco !";
s = s.Substring( 0, s.Length - 2);

Ответ 4

Я обрезаю конец для нежелательных символов:

s = s.TrimEnd(' ', '!');

Чтобы он работал даже с большим количеством пробелов. Или лучше, если вы хотите, чтобы он работал всегда, поскольку текст ввода, кажется, исходит от пользователя:

Regex r = new Regex(@"(?'purged'(\w|\s)+\w)");
Match m = r.Match("Hello Marco   !!");
if (m.Success)
{
    string result = m.Groups["purged"].Value;
}

С этим вы более безопасны. Очистка, основанная на том, что последние два символа должны быть удалены, слишком слаба.

Ответ 5

Проверяли ли вы документацию MSDN (или IntelliSense)? Как насчет метода String.Substring?

Вы можете получить длину, используя свойство Length, вычесть два из этого и вернуть подстроку от начала до двух символов из конец. Например:

string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);

Ответ 6

Если это неизвестное количество строк, вы можете обрезать последнего персонажа, выполнив s = s.TrimEnd('', '!'). Trim();

Рассматривали ли вы использование регулярного выражения? Если вы хотите разрешить буквенные числовые символы, вы можете использовать регулярное выражение для замены символов. Что делать, если вместо a! вы получаете%?

Ответ 7

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

var s = "Hello Marco !";

var corrected = s.Substring(0, s.Length - 2);

Ответ 8

string s = "Hello Marco !";
s = s.Remove(s.length - 2, 2);