'How to match the Nth char in a string in javascript?
I want to find a word by the position of its characters:
const wordlist = ['xenon', 'rewax', 'roger', 'bob', 'xylophone']
And, to find xylophone, i'll have:
const charSlotPairs = [{char: "x", slot: 0}, {char: "y", slot: 1}];
so I'm dynamically building the regex (^.{0}[x])(^.{1}[y])
but i think this regex is wrong... How do i find match based on the position of a char in a string?
function (charSlotPairs){
let regexStr = ""
charSlotPairs.forEach( pair => {
regexStr += `(^.{${pair.slot}}[${pair.char}])`
})
const regex = new RegExp(`${regexStr}\\w`, 'g')
return this.filter( word => !word.match(regex) )
}
Solution 1:[1]
This is the way I would solve it instead of using regex:
function (charSlotPairs){
return !!charSlotPairs.find(pair =>
a.every( word =>
word.charAt(pair.slot) == pair.char)
)
}
Solution 2:[2]
Your query can be soved with the use of loop only.
const wordlist = ['xenon', 'rewax', 'roger', 'bob', 'xylophone'];
const charSlotPairs = [{char: "x", slot: 0}, {char: "y", slot: 1}];
let stringFinder = (StrArr, KeyArr) =>
{
var match = false; // Indicator Variable
// For Iterating a String Array
for (var i of StrArr)
{
// For Iterating the Object Array for each Key
for (var x of KeyArr)
{
/*
|If Conditon fails, match will set to false and Loop will Break
|Otherwise Loop will continue
*/
if (i.charAt(x.slot) != x.char)
{
match = false;
break;
}
else
{
match = true;
}
}
/*
|If the Inner Loop is completed and match is true => Success
|If the Inner Loop is completed and match is false => Failed
*/
if (match)
{
return i;
}
}
return false;
}
console.log(stringFinder(wordlist, charSlotPairs));
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Dharman |
