我正在为测验编写提示系统。提示是答案的字谜。为了使字谜更容易,我保持第一个和最后一个字母相同。
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);
};
对于多个单词的答案,我想分别对每个单词进行anagram。我写道:
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
未能通过第二个和第三个示例,因为它丢失了连字符和撇号。
答案 0 :(得分:4)
按字分隔符拆分可以解决问题:
var peasy = function(s) {
return s.split(/\b/).map(easy).join("");
}
说明:
"computer-aided design".split(/\b/)
会产生["computer", "-", "aided", " ", "design"]
。然后用easy
对每个元素进行随机播放并加入它们,得到类似"ctemopur-adeid diegsn"
的内容......
答案 1 :(得分:2)
使用String.prototype.replace
而不是拆分更简单:
easy
功能。var _ = require('underscore');
var peasy = function(s) {
return s.replace(/\B\w{2,}\B/g, function (m) {
return _.shuffle(m).join('');
});
}