#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