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
答案 0 :(得分:7)
这样的东西?
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'));