var testSt = "Hello"
testSt.split('').filter((a,b)=>{if(b==0||b%2==0){return a}}).join('') // to get even placed value Hlo
Это можно сделать, пройдя через значения и проверить, делится ли индекс на 2 или нет. Можно ли напрямую писать регулярное выражение и exec в строке, чтобы получить помещенные и нечетные значения?
Example - testSt.exec(/^\d*[024]$/) //something like this
Что-то вроде этого?
console.log('abcdefghij'.replace(/(.)./g, '$1'));
.
в RegExp будет соответствовать что угодно, так что /../
- способ сопоставить пару символов. Использование g
модификатора приведет к совпадению всех пар символов в строке. Такое совпадение выполняется без совпадения совпадений, поэтому ab
, cd
, ef
, gh
и ij
.
Положив ()
вокруг первого .
он образует группу захвата по первому символу каждой пары. $1
- специальный синтаксис, используемый для обозначения первой группы захвата, поэтому каждая пара будет заменена первым символом этой пары.
Так, например, первая совпадающая пара в строке - это ab
и a
будет захвачена. Следовательно, ab
будет заменено на a
. Затем он заменит cd
на c
, ef
на e
и так далее.
Стоит отметить, что для строки с нечетной длиной окончательный символ не будет сопоставляться, но это не проблема, потому что мы не хотим его заменять. Это было бы проблемой, если бы мы захотели поменять роли нечетных цифр и даже цифр, чтобы мы не могли просто перемещать круглые скобки. Чтобы получить это, нам нужно сделать второй символ необязательным в конце строки. Мы можем сделать это, используя символ $
, который соответствует концу строки:
// This leaves a trailing letter i at the end, which is wrong
console.log('abcdefghi'.replace(/.(.)/g, '$1'));
// Fixed
console.log('abcdefghi'.replace(/.(.|$)/g, '$1'));
0%2==0
поэтомуb==0||
избыточно