如何检测每个连续字符与前一个字符相差最小字母差的字符序列(1)
How to detect char sequences where each successive char differs from the previous one by minimal alphabetical difference (1)?
我想检测每个连续字符与前一个字符相差1的字符序列,其中1是其"字母差"。在标准字母表中,index("b")-index("a")=1, index("z")-index("y")=1, index("z")-index("x")=2
,依此类推。我想要的是用它的第一个和最后一个字符替换这样的序列,删除介于两者之间的所有字符。请注意,如果在这样的序列中只有两个字符,则不需要替换。如果顺序相反,则不需要替换,例如"dcba"
例如,
"dabcehklopqrsafxwvu012345678910210"
应该转换为
"dacehklosafxwvu0910210"
有趣的是,昨天我解决了完全相同的问题:)。
尝试以下解决方案:
var str = "dabcehklopqrsafxwvu012345678910210";
var res = Array.prototype.reduce.call(str, function(acc, item, index, strAr) {
var pushItem =
//first item always included
index === 0 ||
// last item always included
index === strAr.length - 1 ||
// include the first item in sequence
strAr[index - 1].charCodeAt(0) + 1 !== item.charCodeAt(0) ||
// include the last item in sequence
strAr[index + 1].charCodeAt(0) - 1 !== item.charCodeAt(0)
if (pushItem) {
acc += item;
}
return acc;
}, '');
console.log(res); // prints "dacehklosafxwvu0910210"
查看工作演示。
单循环解决方案
var code = 'dabcehklopqrsafxwvu012345678910210',
result = '',
i = 0, l;
for (i = 0, l = code.length; i < l; i++) {
result +=
i > 0 &&
i + 1 < l &&
code.charCodeAt(i - 1) + 1 === code.charCodeAt(i) &&
code.charCodeAt(i) + 1 === code.charCodeAt(i + 1) ?
'' :
code[i];
}
document.write(result);
我认为您键入的示例答案不正确。。。因为你们彼此之间还有kl。。。
不管怎样,你的代码应该像下面这样:
var x = "dabcehklopqrsafxwvu012345678910210";
var z = x;
for (var i = 1; i < x.length - 1; i++)
if (x.charCodeAt(i) == x.charCodeAt(i + 1) - 1) {
x = x.replace(x.charAt(i) + x.charAt(i + 1), x.charAt(i));
}
alert(x);
这里的问题是,如果12345应该是135,在你的样本中,klopq变成了klo。。。?
相关文章:
- 如何检测每个连续字符与前一个字符相差最小字母差的字符序列(1)
- 使用JavaScript检测输入的字符
- 如何使用jquery检测特殊字符
- 如何检测字符的第二次出现
- Javascript - 检测字符串中的某些字符并替换这些字符之间的内容
- Javascript 正则表达式条件语句,当在字符串中检测到两个相同字符时
- 检测输入框中的字符
- 检测字符是否为字母
- 检测由 shift 键和其他键组合产生的特殊字符
- 如何检测第一个字符是否为回车符,并添加回车符
- 如何修改此正则表达式以检测和忽略过多字符
- 检测双字节字符
- Javascript RegExp:如何检测空格字符
- Regex使用'?检测URL'结尾处的字符
- 检测字段中输入的每个字符并运行条件语句
- 如何检测文本中单个字符的onclick()或类似字符
- Javascript正则表达式来检测字符串是否具有两个“@"字符
- 检测表单字段中是否有3个或更多文本字符
- 如何检测浏览器's表示“;新行“;有两个字符
- 检测是否在输入元素JS中输入了特殊字符