在Javascript中从字符串中删除尾随字符。

77

如何从字符串中删除特定的尾随字符?

例如,如果我有一个字符串:

> "item,"

我想只移除结尾的逗号,但仅当它们是逗号时?

谢谢!

4个回答

140

使用简单的正则表达式:

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

9
只是想补充一下:如果您要替换具有正则表达式含义的字符(例如 '.'),请不要忘记使用反斜杠。 - Please treat your mods well.

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

10
那个 if 可能应该改成 while - icktoofay
为什么?如果最后一个字符是逗号,那就切掉它...我是说,这种情况最有可能出现在你从数组中获取元素并生成 JSON 格式文本或其他类似的操作时。你会像这样写:'foreach element print element and ","',但是随后你意识到,“哥们,我多了一个逗号”,于是想要把它去掉。 - Vicente Plata
他说逗号要加s,但我同意标题有点让人困惑。 - Kit Sunde
是的,我认为这取决于他想要实现什么。@Dutrow请解释一下。 - Vicente Plata
使用while循环并不会有什么问题,他的特定需求几乎不可能涉及去除尾随逗号。 - Luke Taylor

15

一个去除字符串尾部任何字符的函数可以是:

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

  return result;
}

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//', '/');


它在 '///te/st//,'/' 上的表现如何? - Tomas Hesse
@TomasHesse - 看起来可以工作了!我添加了一个片段来测试它。 - Brad Parks

1
这将删除末尾的非字母数字字符。
const examples = ["abc", "abc.", "...abc", ".abc1..!@#", "ab12.c"];
examples.forEach(ex => console.log(ex.replace(/\W+$/, "")));

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接