Удаление завершающих символов из строки в Javascript

#javascript #regex #parsing

#javascript #регулярное выражение #синтаксический анализ

Вопрос:

Какой приемлемый способ удалить конкретный завершающий символ из строки?

Например, если бы у меня была строка:

 > "item,"
  

И я хотел удалить завершающие ‘,’ы, только если они были ‘,’ы?

Спасибо!

Ответ №1:

Используйте простое регулярное выражение:

 var s = "item,";
s = s.replace(/, $/, "");
  

Комментарии:

1. Просто хотел добавить: не забывайте обратную косую черту, если вы заменяете символы, которые имеют значения в регулярных выражениях (например, ‘.’).

Ответ №2:

 if(myStr.charAt( myStr.length-1 ) == ",") {
    myStr = myStr.slice(0, -1)
}
  

Комментарии:

1. Вероятно, это if должно быть while .

2. Ммм, почему?? Если последний символ является запятой, вырежьте последний символ… Я имею в виду, что наиболее вероятный вариант использования для этого — это когда вы получаете элемент из массива и создаете текст в формате JSON или что-то в этом роде. Вы говорите что-то вроде ‘перед каждым элементом напечатать элемент и «,»‘ но потом вы понимаете: «чувак, у меня есть лишний ‘,'» и хотите его удалить.

3. Он говорит «,»s во множественном числе, но я согласен, что название сбивает с толку.

4. Да, я думаю, это зависит от того, чего он хочет достичь. @Dutrow, пожалуйста, объясните

5. Использовать a while не повредит, маловероятно, что его конкретная потребность заключалась в том, чтобы не удалять конечную запятую.

Ответ №3:

Функция для обрезки любых завершающих символов будет:

 function trimTrailingChars(s, charToTrim) {
  var regExp = new RegExp(charToTrim   " $");
  var result = s.replace(regExp, "");

  return resu<
}

function test(input, charToTrim) {
  var output = trimTrailingChars(input, charToTrim);
  console.log('input:n'   input);
  console.log('output:n'   output);
  console.log('n');
}

test('test////', '/');
test('///te/st//', '/');  

Комментарии:

1. Как это будет работать с ‘///te / st //,’/’?

2. @TomasHesse — кажется, работает! Я добавил фрагмент выше, чтобы протестировать его

Ответ №4:

Это приведет к удалению завершающих не буквенно-цифровых символов.

 const examples = ["abc", "abc.", "...abc", ".abc1..!@#", "ab12.c"];
examples.forEach(ex => console.log(ex.replace(/W $/, "")));

// Output:
abc
abc
...abc
.abc1
ab12.c