2010-03-01 12 views
7

Sé que puedo pasar una cadena como el segundo parámetro al método de reemplazo del objeto de cadena de JavaScript. En este caso puedo usar $ ` y $' para hacer referencia al texto de la parte izquierda/derecha de una persona compatible. Ahora mi pregunta es: si paso una función de devolución de llamada como el segundo parámetro, ¿cómo puedo obtener la misma información? Quiero usar esta información en la función de devolución de llamada. Muchas gracias.pregunta sobre el método de reemplazo de cadena de JavaScript

+3

... espera, se puede utilizar una devolución de llamada? ¡Ordenado! – Matchu

Respuesta

10

Ver Mozilla's documentation; no obtendrás esa información de forma gratuita.

La buena noticia es que va a obtener el desplazamiento de la coincidencia como su penúltimo argumento, y la cadena total como la última. Para que pueda ejecutar sus propias funciones de subcadena.

var str = 'abc'; 
str = str.replace('b', function (match, offset, full) { 
    var before = full.substr(0, offset), 
     after = full.substr(offset + 1, full.length - offset); 
    return 'foo'; // or, ya know, something actually using before and after 
}); 
0
var str = 'abc'; 
str = str.replace('b', function (match) { 
    // (!) List of actual arguments depends from template of RegEx >>> 
    var offset = arguments.length - 1, full = arguments[offset]; 
    offset = arguments[offset - 1]; 
    // (!) But the first argument is match 
    var before = full.substr(0, offset), 
     after = full.substr(offset + 1, full.length - offset); 
    return 'foo'; // or, ya know, something actually using before and after 
}); 
Cuestiones relacionadas