从字符串javascript中删除字符的更简单方法

从字符串javascript中删除字符的更简单方法,javascript,regex,string,replace,arr,Javascript,Regex,String,Replace,Arr,我有一系列的评论,我想把它们变成一个字符串,除去a-z和之外的所有字符 编辑::我实际上希望删除除a-z和'之外的所有字符,在单词之间只保留一个空格,并将所有大写字母小写 这是我当前的代码,它有效 let words=[“一款很棒的日常用品”, “价格不错,大约需要10天的交货时间”, “物超所值-将再次购买”, “好吧,我总是用这个,这是意料之中的”, “良好价值”, “优质产品,物超所值”, “好”, “干得好!”, “谢谢你”, “太好了,很容易使用”, “我讨厌它”, “准时到达,产品优

我有一系列的评论,我想把它们变成一个字符串,除去
a-z
之外的所有字符

编辑::我实际上希望删除除
a-z
'
之外的所有字符,在单词之间只保留一个空格,并将所有大写字母小写

这是我当前的代码,它有效

let words=[“一款很棒的日常用品”,
“价格不错,大约需要10天的交货时间”,
“物超所值-将再次购买”,
“好吧,我总是用这个,这是意料之中的”,
“良好价值”,
“优质产品,物超所值”,
“好”,
“干得好!”,
“谢谢你”,
“太好了,很容易使用”,
“我讨厌它”,
“准时到达,产品优良,谢谢”,
“服务快捷,价格优惠。”,
“又好又爽”,
“我女儿正在进行路试,但到目前为止它让人耳目一新”,
“请勿购买本产品”,
“避免”,
“没有注意到任何差异”,
“可怕的味道”,
“做它的工作,并显示它的工作”]
joinedwords=words.join(“”)
removeChars=joinedwords.replace(/[^\w]/gi,“”).toLowerCase()
replaceApos=removeChars.replace(/it\ss\s/g,“it's”)
replaceNum=replaceApos.replace(/[0-9]/g,”)
replaceWhi=replaceNum.replace(/\s\s+/g,”)
但是有谁能提出一种更好/更有效/更简单的修复方法吗

如果regexp需要不同的输出,可以将它们链接成一个吗


谢谢

如果您希望在不使用正则表达式的情况下执行此操作,一种可能的方法是使用如下数组筛选:

const allowedChars='abcdefghijklmnopqrstuvwxyz\'.split('');
设arr=words.join(“”).toLowerCase().split(“”);
让finalStr=arr.filter(字母=>allowedChars.includes(字母)).join(“”);

这提供了一种超级可读的方式来配置允许哪些字母

如果您希望在没有正则表达式的情况下执行此操作,一种可能的方式是使用如下数组过滤:

const allowedChars='abcdefghijklmnopqrstuvwxyz\'.split('');
设arr=words.join(“”).toLowerCase().split(“”);
让finalStr=arr.filter(字母=>allowedChars.includes(字母)).join(“”);
这允许以超级可读的方式配置允许使用的字母

let words=[“一款很棒的日常用品”,
“价格不错,大约需要10天的交货时间”,
“物超所值-将再次购买”,
“好吧,我总是用这个,这是意料之中的”,
“良好价值”,
“优质产品,物超所值”,
“好”,
“干得好!”,
“谢谢你”,
“太好了,很容易使用”,
“我讨厌它”,
“准时到达,产品优良,谢谢”,
“服务快捷,价格优惠。”,
“又好又爽”,
“我女儿正在进行路试,但到目前为止它让人耳目一新”,
“请勿购买本产品”,
“避免”,
“没有注意到任何差异”,
“可怕的味道”,
“做它的工作,并显示它的工作”];
joinedwords=单词。连接(“”);
removeChars=joinedwords.replace(/[^A-Za-z']/g,”).toLowerCase();
//打印结果
文件。写入(删除文件)
let words=[“一款很棒的日常用品”,
“价格不错,大约需要10天的交货时间”,
“物超所值-将再次购买”,
“好吧,我总是用这个,这是意料之中的”,
“良好价值”,
“优质产品,物超所值”,
“好”,
“干得好!”,
“谢谢你”,
“太好了,很容易使用”,
“我讨厌它”,
“准时到达,产品优良,谢谢”,
“服务快捷,价格优惠。”,
“又好又爽”,
“我女儿正在进行路试,但到目前为止它让人耳目一新”,
“请勿购买本产品”,
“避免”,
“没有注意到任何差异”,
“可怕的味道”,
“做它的工作,并显示它的工作”];
joinedwords=单词。连接(“”);
removeChars=joinedwords.replace(/[^A-Za-z']/g,”).toLowerCase();
//打印结果

文件。写入(删除文件)[^'a-zA-z]
会做你描述的事情,但你的代码似乎想做得更多,因此你应该澄清你的实际需求,而不是依靠人们猜测。只需一次完成
单词。加入(“”)。替换(…)。替换(…)…
等等你的代码似乎比你描述的做得更多。它还删除了重复的空格,并将“Its”修改为“It's”,这似乎是一个相当随意的拼写更新,因为在一个文本中有数百个这样的改进。。。那么目的是什么呢?是否仅删除除字母和引号以外的所有字符?或者更多?您的两个正则表达式正在替换为同一个对象,您可以将它们合并为一个。@trincot我说过我想删除除a-z和“作为n撇号”之外的所有字符,是的,在单词之间也只需要一个空格
[^'a-zA-z]
将按照您所描述的做,但您的代码似乎想做得更多,因此您应该澄清您的实际需求,而不是依靠人们猜测。也可以先对更简单的正则表达式使用小写形式,
joinedwords.toLowerCase()。替换(/[^a-z']/g,”)
也可以先对更简单的正则表达式使用小写形式,
joinedwords.toLowerCase().replace(/[^a-z']/g,”)