Let's say I have this string:
test (string) (10)
How can I get the position of the third parenthesis (second opening)?
This one:
P.S. In real situations I don't control how many characters are inside the parenthesis, so I can't just count them backwards to get a position. I need the index of the third parenthesis wherever it is.
Use a regular expression that matches everything up to the third parenthesis, then get its length.
str = 'test (string) (10)';
match = str.match(/^[^(]*\([^)]*\)[^(]*\(/);
if (match) {
console.log(match[0].length-1);
}
The easiest way is definitely not the most performant way.
If performance isn't an issue, I'd personally use split.
var chunks = "test (string) (10)".split("(")
pos = chunks[0].length + chunks[1].length
You may have to add 1 to the formula above or something like that. I don't have time get it just right ;)
Use indexOf twice, first to get the position of the first closing parentheses, then to get the next opening one:
let s = 'test (string) (10)'
let position = s.indexOf('(', s.indexOf(')'))
console.log(position)
Note that position will be zero-based, add 1 if necessary.