从字符串中删除字符

72

我可以用什么不同的方式在JavaScript中从字符串中删除字符?


2
这个回答是否能解决你的问题?如何使用Javascript从字符串中删除一个字符? - Michael Freidgeim
6个回答

99

使用正则表达式的 replace() 是最灵活/强大的方式。这也是在JavaScript中全局替换每个搜索模式的唯一方法。非正则表达式变体的 replace() 只会替换第一个实例。

例如:

var str = "foo gar gaz";

// returns: "foo bar gaz"
str.replace('g', 'b');

// returns: "foo bar baz"
str = str.replace(/g/gi, 'b');

在后一个例子中,末尾的/gi表示大小写不敏感和全局替换(意味着不仅应替换第一个实例),这通常是在字符串替换时所需的。

删除字符,请使用空字符串作为替换内容:

var str = "foo bar baz";

// returns: "foo r z"
str.replace(/ba/gi, '');

2
好的回答。顺便说一下,str.replace('g', 'b');本身是不起作用的。使用str = str.replace('g', 'b');会使答案更好。 - Yuci

48

一行代码可同时移除多个字符的列表 - 例如从电话号码中移除+、-、空格、(、)等:

var str = "+(48) 123-456-789".replace(/[-+()\s]/g, '');  // result: "48123456789"

我们使用正则表达式[-+()\s],其中我们将不需要的字符放在[]之间。

("\s"是空格字符转义符——有关更多信息,请搜索"正则表达式中的字符转义")


2
你可以使用一个更简单和更强大的正则表达式来实现与电话号码示例相同的结果:var str = "+(48) 123-456-789".replace(/[\D]/g, ''); // result: "48123456789" - Stefano Coletta

14

我知道这很老,但如果你对它进行分割,然后再拼接起来,它将会删除所有出现的特定字符,例如:

var str = theText.split('A').join('')

将从字符串中删除所有出现的 'A',显然是不区分大小写的。


完美。如果你需要一些易于阅读的东西。 - Lenn Dolling

5
你可以使用 replace 函数。
str.replace(regexp|substr, newSubstr|function)

3

到目前为止,还没有人谈论过的另一种方法是使用 substr 方法从另一个字符串中生成字符串... 如果您的字符串具有定义的长度,并且要删除的字符位于字符串的两端或字符串的“静态维度”内,则此方法非常有用。


1
const removeChar = (str: string, charToBeRemoved: string) => {
    const charIndex: number = str.indexOf(charToBeRemoved);
    let part1 = str.slice(0, charIdx);
    let part1 = str.slice(charIdx + 1, str.length);
    return part1 + part2;
  };

1
问题不是关于Typescript。 - General Grievance

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