Al usar indexOf() , pude detectar si la entrada contiene "SP-" y reemplazarla.
Sin embargo, necesito buscar más de un conjunto de caracteres: sp- , SP- , eb- , EB- y más...
Tengo lo siguiente para reemplazar sp- y SP- pero no quiero replicar este bloque completo para cada instancia.
// Check for 'sp-' characters in the order ID. if (order_id.indexOf("SP-") !== -1) { // Remove string from input form.find('input[name="orderid"]').val(order_id.replace("SP-", "")); } // Check for 'SP-' characters in the order ID. if (order_id.indexOf("sp-") !== -1) { // Remove string from input form.find('input[name="orderid"]').val(order_id.replace("sp-", "")); } Actualización : solo pensé en una solución mejor, busque todos los caracteres anteriores e incluidos - y elimínelos. Por lo tanto, no estamos limitados a una lista específica en caso de que se agreguen nuevos prefijos en una fecha posterior.
sp-1234 , SP-1234 , xx-1234 , etc
Para reemplazar todas las mayúsculas y minúsculas, ¿puedes probar esto?
form.find('input[name="orderid"]').val(order_id.replace(/sp-/gi, ''));o puedes hacer algo como esto
['SP-', 'sp-', 'eb-', 'EB-'].forEach((item)=>{ if ( order_id.indexOf(item) !== -1 ) { // Remove string from input form.find('input[name="orderid"]').val(order_id.replace(item, '')); } });Actualización: solo pensé en una solución mejor, busque todos los caracteres anteriores e incluidos, y elimínelos. Por lo tanto, no estamos limitados a una lista específica en caso de que se agreguen nuevos prefijos en una fecha posterior.
sp-1234, SP-1234, xx-1234, etc.
Tal vez algo como esto debería funcionar
if(order_id.indexOf('-') !== -1) { var prefix = order_id.substr(0, order_id.indexOf('-')); form.find('input[name="orderid"]').val(order_id.replace(`${prefix}-`, "")); }Simplemente use una expresión regular con un conjunto de insensibilidad a mayúsculas y minúsculas. No hay ninguna razón para verificar que la cadena exista dentro de la cadena porque el método de reemplazo no hace nada si no hay una coincidencia.
function removePrefix(str) { return str.replace(/(sp|eb)-/i, ''); } ["fo-foooo", "sp-123", "SP-123", "eb-321", "EB-911"].forEach( function (str) { console.log(str, removePrefix(str)); });Hacer coincidir cualquier cosa que comience con una cadena seguida de un guión
function removePrefix(str) { return str.replace(/^[^-]+-/i, ''); } ["fo-foooo", "sp-123", "SP-123", "eb-321", "EB-911"].forEach( function (str) { console.log(str, removePrefix(str)); });Prueba algo como esto:
var vals = ["sp-","ep-"] // Put all the values here vals.forEach(v => { if (order_id.indexOf(v) !== -1) {form.find('input[name="orderid"]').val(order_id.replace(v, ''))}; })