Digamos que tengo esta cadena:
test (string) (10)
¿Cómo puedo obtener la posición del tercer paréntesis (segunda apertura)?
Éste:
PD: en situaciones reales, no controlo cuántos caracteres hay dentro del paréntesis, por lo que no puedo simplemente contarlos hacia atrás para obtener una posición. Necesito el índice del tercer paréntesis donde sea que esté.
Use una expresión regular que coincida con todo hasta el tercer paréntesis, luego obtenga su longitud.
str = 'test (string) (10)'; match = str.match(/^[^(]*\([^)]*\)[^(]*\(/); if (match) { console.log(match[0].length-1); }La forma más fácil definitivamente no es la forma más eficaz.
Si el rendimiento no es un problema, personalmente usaría split .
var chunks = "test (string) (10)".split("(") pos = chunks[0].length + chunks[1].lengthEs posible que deba agregar 1 a la fórmula anterior o algo así. No tengo tiempo para hacerlo bien ;)
Use indexOf dos veces, primero para obtener la posición del primer paréntesis de cierre, luego para obtener el siguiente paréntesis de apertura:
let s = 'test (string) (10)' let position = s.indexOf('(', s.indexOf(')')) console.log(position)Tenga en cuenta que la posición estará basada en cero, agregue 1 si es necesario.