una ultimo palabras numeros extraer espacios entre eliminar ejemplo cortar caracteres caracter cadena buscar array javascript jquery regex

javascript - ultimo - dividir cadena solo en la primera instancia del carácter especificado



split javascript array (11)

En mi código, dividí una cadena basada en _ y tomé el segundo elemento de la matriz.

var element = $(this).attr(''class''); var field = element.split(''_'')[1];

Toma good_luck y me da luck . ¡Funciona genial!

Pero, ahora tengo una clase que se ve como good_luck_buddy . ¿Cómo obtengo mi javascript para ignorar el segundo _ y darme luck_buddy ?

Encontré este var field = element.split(new char [] {''_''}, 2); en ac # stackoverflow responde pero no funciona. Lo intenté en jsFiddle ...


¿Para qué necesitas expresiones regulares y matrices?

myString = myString.substring(myString.indexOf(''_'')+1)

var myString= "hello_there_how_are_you" myString = myString.substring(myString.indexOf(''_'')+1) console.log(myString)


Esto funcionó para mí en Chrome + FF:

"foo=bar=beer".split(/^[^=]+=/)[1] // "bar=beer" "foo==".split(/^[^=]+=/)[1] // "=" "foo=".split(/^[^=]+=/)[1] // "" "foo".split(/^[^=]+=/)[1] // undefined

Si también necesita la clave, intente esto:

"foo=bar=beer".split(/^([^=]+)=/) // Array [ "", "foo", "bar=beer" ] "foo==".split(/^([^=]+)=/) // [ "", "foo", "=" ] "foo=".split(/^([^=]+)=/) // [ "", "foo", "" ] "foo".split(/^([^=]+)=/) // [ "foo" ] //[0] = ignored (holds the string when there''s no =, empty otherwise) //[1] = hold the key (if any) //[2] = hold the value (if any)


Evito RegExp a toda costa. Aquí hay otra cosa que puedes hacer:

"good_luck_buddy".split(''_'').slice(1).join(''_'')


La solución de Mark F es increíble, pero no es compatible con navegadores antiguos. La solución de Kennebec es increíble y está respaldada por navegadores antiguos, pero no admite expresiones regulares.

Por lo tanto, si está buscando una solución que divida su cadena solo una vez, que sea compatible con navegadores antiguos y admita expresiones regex, esta es mi solución:

String.prototype.splitOnce = function(regex) { var match = this.match(regex); if(match) { var match_i = this.indexOf(match[0]); return [this.substring(0, match_i), this.substring(match_i + match[0].length)]; } else { return [this, ""]; } } var str = "something/////another thing///again"; alert(str.splitOnce(///+/)[1]);


Necesito las dos partes de la cuerda, por lo tanto, la mirada regex detrás me ayuda con esto.

const full_name = ''Maria do Bairro''; const [first_name, last_name] = full_name.split(/(?<=^[^ ]+) /); console.log(first_name); console.log(last_name);


Para principiantes como yo que no están acostumbrados a la Expresión regular, esta solución alternativa funcionó:

var field = "Good_Luck_Buddy"; var newString = field.slice( field.indexOf("_")+1 );

El método slice () extrae una parte de una cadena y devuelve una nueva cadena y el método indexOf () devuelve la posición de la primera aparición encontrada de un valor especificado en una cadena.


Puede usar la expresión regular como:

var arr = element.split(/_(.*)/) Puede usar el segundo parámetro que especifica el límite de la división. es decir: var field = element.split (''_'', 1) [1];


Reemplace la primera instancia con un marcador de posición único y luego divídalo desde allí.

"good_luck_buddy".replace(//_/,''&'').split(''&'') ["good","luck_buddy"]

Esto es más útil cuando se necesitan ambos lados de la división.


Use paréntesis de captura :

"good_luck_buddy".split(/_(.+)/)[1] "luck_buddy"

Ellos se definen como

Si el separator contiene paréntesis de captura, los resultados coincidentes se devuelven en la matriz.

Entonces en este caso queremos dividir en _.+ (Es decir, el separador de división es una cadena secundaria que comienza con _ ) pero también dejar que el resultado contenga alguna parte de nuestro separador (es decir, todo después de _ ).

En este ejemplo, nuestro separador (que coincide con _(.+) ) Es _luck_buddy y el grupo capturado (dentro del separador) es lucky_buddy . Sin el paréntesis de captura, luck_buddy (matching .+ ) No se habría incluido en la matriz de resultados, ya que es el caso de la split simple que los separadores no se incluyen en el resultado.


Use el método string replace() con una regex :

document.body.innerHTML = "good_luck_buddy".replace(/.*?_/, "");

Esta expresión regular coincide con 0 o más caracteres antes del primer _ y del _ mismo. La coincidencia es luego reemplazada por una cadena vacía.


String.split , String.split de Javascript no tiene forma de limitar el número real de divisiones. Tiene un segundo argumento que especifica cuántos de los elementos de división reales se devuelven, lo que no es útil en su caso. La solución sería dividir la cadena, cambiar el primer elemento y volver a unir los elementos restantes:

var element = $(this).attr(''class''); var parts = element.split(''_''); parts.shift(); // removes the first item from the array var field = parts.join(''_'');