如何使用JavaScript将一个字符串中的任何字符替换为另一个字符串

kgsdhlau  于 2022-12-25  发布在  Java
关注(0)|答案(2)|浏览(272)

我敢肯定我以前见过这个,但我想不起来是怎么做的了。我已经用头撞了好几个小时了!
我想做的是将一系列字母数字和符号字符加载到名为"allowedCharacters"的字符串中。
然后,当一个userEnteredString出现时,我想执行string. replace()来从userEnteredString中删除任何不在"allowedCharacters"中的字符。
就像这样:

function parseEntry(enteredString) {
    let allowedAlphas = 'd';
    let allowedDigits = '0123456789';
    let allowedSymbols = ' ()×*+-=÷\/';
    let allowedCharacters = allowedAlphas + allowedDigits + allowedSymbols;

    enteredString = enteredString.replace(allowedCharacters, '');
}

我知道这是错误的,也不管用,但我一直在拼命回想我以前是怎么做的,已经有十多二十年了。
基本上,我想设置一个简单的字符串,它可以包含允许的字符,然后从另一个字符串中删除任何不在"允许"字符串中的单个字符。

jjhzyzn0

jjhzyzn01#

实际上,如果你把所有目标字符都包含在一个正则表达式字符类中,它应该可以工作:

function parseEntry(enteredString) {
    let allowedAlphas = 'd';
    let allowedDigits = '0123456789';
    let allowedSymbols = ' ()×*+=÷\/-';
    let allowedCharacters = allowedAlphas + allowedDigits + allowedSymbols;
    let re = new RegExp("[^" + allowedCharacters + "]+");

    enteredString = enteredString.replace(re, "");
}
rkkpypqq

rkkpypqq2#

你可以做这样的事,

function parseEntry(enteredString) {
  let allowedAlphas = 'd';
  let allowedDigits = '0123456789';
  let allowedSymbols = ' ()×*+-=÷\/';
  let allowedCharacters = allowedAlphas + allowedDigits + allowedSymbols;

  return [...enteredString].filter(c => allowedCharacters.includes(c)).join("");
}

const parsed = parseEntry("123dabcd123");
console.log(parsed);

(代码段也可作为JSFiddle here提供)
举重的主要部分是返回的最后一行。
1.我们首先将字符串转换为[...x]数组
1.然后,我们可以过滤每个字符c,使c存在于allowCharacters字符串中。
1.一旦我们过滤了数组,我们就可以用.join("")将它转换回字符串

相关阅读

相关问题