我有包含5字母的字符串。我想匹配那些包含连续字母的字母,例如:
abcde -返回匹配
nopqrs -返回匹配
cdefg -返回匹配
fghij -返回匹配
但
abcef -不返回匹配
abbcd -不返回匹配
我可以写所有的组合,但是当你用Regex写的时候,我认为肯定有更好的方法。
发布于 2020-06-08 18:05:33
一个非常简单的选择是只使用String.prototype.includes
function isConsecutive(string) {
const result = 'abcdefghijklmnopqrstuvwxyz'.includes(string);
console.log(string, result);
}
// true
isConsecutive('abcde');
isConsecutive('nopqrs');
isConsecutive('cdefg');
isConsecutive('fghij');
// false
isConsecutive('abcef');
isConsecutive('abbcd');
发布于 2020-06-08 17:56:51
如果您可以使用Python,则此函数将字符串序列转换为编号字符,并检查它们是否是结果字符(如果是,它们也是连续的字母):
def are_letters_consequtive(text):
nums = [ord(letter) for letter in text]
if sorted(nums) == list(range(min(nums), max(nums)+1)):
return "match"
return "no match"
print(are_letters_consequtive('abcde'))
print(are_letters_consequtive('cdefg'))
print(are_letters_consequtive('fghij'))
print(are_letters_consequtive('abcef'))
print(are_letters_consequtive('abbcd'))
print(are_letters_consequtive('noprst'))产出:
match
match
match
no match
no match
no match发布于 2020-06-08 17:56:12
使用javascript的替代方法:
let string1 = 'abcde'
let string2 = 'fghiz'
function conletters(string) {
if(string.length > 5 || typeof string != 'string') throw '[ERROR] not string or string greater than 5'
for(let i = 0; i < string.length - 1; i++) {
if(!(string.charCodeAt(i) + 1 == string.charCodeAt(i + 1)))
return false
}
return true
}
console.log('string1 is consecutive: ' + conletters(string1))
console.log('string2 is consecutive: ' + conletters(string2))
https://stackoverflow.com/questions/62268016
复制相似问题