如何从wordnet中获得只有1个单词的列表,而不包含特殊字符?我试着让它像:
const wordnet = require('wordnet')
await wordnet.init();
let results = await wordnet.list();
const words = results.filter(m=> m.includes("raine"))
//array = ["capital of the ukraine", "rainer maria rilke", "cross of lorraine", "straight-grained", "quiche lorraine", "coarse-grained", "featherbrained", "pebble-grained", "scatterbrained", "toilet-trained", "unrestrainedly", "animal trainer", "lorraine cross", "trained worker", "close-grained", "cross-grained"]
message.channel.send(`${words}`)
//expected output: ["featherbrained", "scatterbrained", "unrestrainedly"]
我知道这可以使用RegExp,但我不知道怎么做。我需要帮助。
您可以先检查字母字符
const
array = ["capital of the ukraine", "rainer maria rilke", "cross of lorraine", "straight-grained", "quiche lorraine", "coarse-grained", "featherbrained", "pebble-grained", "scatterbrained", "toilet-trained", "unrestrainedly", "animal trainer", "lorraine cross", "trained worker", "close-grained", "cross-grained"],
words = array.filter(m => /^[a-z]+$/i.test(m) && m.includes("raine"));
console.log(words);
另一种方法是使用字符串并从中构建正则表达式。
const
array = ["capital of the ukraine", "rainer maria rilke", "cross of lorraine", "straight-grained", "quiche lorraine", "coarse-grained", "featherbrained", "pebble-grained", "scatterbrained", "toilet-trained", "unrestrainedly", "animal trainer", "lorraine cross", "trained worker", "close-grained", "cross-grained"],
word = 'raine',
wordR = new RegExp(`^[a-z]*${word}[a-z]*$`, 'i'),
words = array.filter(RegExp.prototype.test, wordR);
console.log(words);