Javascript 如何生成简单的保留标点的字谜?
我正在为测验写提示系统。这些提示是答案的字谜。为了使字谜更容易理解,我把第一个字母和最后一个字母保持不变Javascript 如何生成简单的保留标点的字谜?,javascript,regex,Javascript,Regex,我正在为测验写提示系统。这些提示是答案的字谜。为了使字谜更容易理解,我把第一个字母和最后一个字母保持不变 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 _ = require('underscore');
var easy = function(s) {
if (s.length <= 1) {
return s;
}
return s[0] + _.shuffle(s.slice(1, -1)).join("") + s.slice(-1);
};
但是,这会丢失答案中的任何标点符号(替换为空格)。我想把标点保持在原来的位置。我该怎么做
以下是三个要测试的示例:
console.log(peasy("mashed potatoes"));
console.log(peasy("computer-aided design"));
console.log(peasy("sophie's choice"));
上面的My function
peasy
未能通过第二个和第三个示例,因为它丢失了连字符和撇号。通过单词分隔符进行拆分可以达到以下目的:
var peasy = function(s) {
return s.split(/\b/).map(easy).join("");
}
说明:
“计算机辅助设计”。拆分(/\b/)
会导致[“计算机”、“-”、“辅助”、“,”设计]
。然后你用easy
洗牌每个元素并加入它们,得到类似“ctemopur adeid diegsn”
的东西…按单词分隔符拆分的方法:
var peasy = function(s) {
return s.split(/\b/).map(easy).join("");
}
说明:
“计算机辅助设计”。拆分(/\b/)
会导致[“计算机”、“-”、“辅助”、“,”设计]
。然后用easy
洗牌每个元素并加入它们,得到类似“ctemopur adeid diegsn”
的东西…使用String.prototype更简单。替换而不是拆分:
- 你不需要在第一个字母之后和最后一个字母之前切片
- 替换仅在单词字符上发生(其他字符保持不变)
- 跳过少于4个字符的单词
- 它比较短,不需要
easy
功能
var\=require('下划线');
var peasy=函数{
返回s.replace(/\B\w{2,}\B/g,函数(m){
返回uu.shuffle(m.join)('');
});
}
使用String.prototype更简单。替换而不是拆分:
- 你不需要在第一个字母之后和最后一个字母之前切片
- 替换仅在单词字符上发生(其他字符保持不变)
- 跳过少于4个字符的单词
- 它比较短,不需要
easy
功能
var\=require('下划线');
var peasy=函数{
返回s.replace(/\B\w{2,}\B/g,函数(m){
返回uu.shuffle(m.join)('');
});
}
您的easy
函数可以返回s
if(s.length)您的easy
函数可以返回s
if(s.length