我正在为测验编写提示系统。这些提示是答案的连字。为了使字谜更容易,我将首字母和尾字母保持相同。
var _ = require('underscore');
var easy = function(s) {
if (s.length <= 1) {
return s;
}
return s[0] + _.shuffle(s.slice(1, -1)).join("") + s.slice(-1);
};
对于多个单词的答案,我想分别给每个单词加上字谜。我写:
var peasy = function(s) {
return s.split(/\W/).map(easy).join(" ");
}
但是,这会丢失答案中的所有标点符号(用空格代替)。我想将标点符号保持在原始位置。我怎样才能做到这一点?
以下是三个要测试的示例:
console.log(peasy("mashed potatoes"));
console.log(peasy("computer-aided design"));
console.log(peasy("sophie's choice"));
我上面的函数
peasy
在第二和第三个示例中失败了,因为它丢失了连字符和撇号。 最佳答案
按单词分隔符拆分可达到以下目的:
var peasy = function(s) {
return s.split(/\b/).map(easy).join("");
}
说明:
"computer-aided design".split(/\b/)
生成["computer", "-", "aided", " ", "design"]
。然后,您可以用easy
将每个元素洗牌,然后将它们加入,得到类似"ctemopur-adeid diegsn"
的东西……