explotar cadena en jquery

5 minutos de lectura

avatar de usuario
Ankpro veinticinco

Obtengo el siguiente resultado a través de ajax.

row=Shimla|1|http://vinspro.org/travel/ind/

yo quiero http://vinspro.org/travel/ind/ de eso. He usado la función de búsqueda y división, pero no funciona. por favor dime como puedo conseguirlo?

var result=$(row).split('|');
    alert(result);

Chrome que muestra el siguiente error

Uncaught Error: Syntax error, unrecognized expression: Shimla|1|http://vinspro.org/travel/ind/ 

  • la split('|') creará 3 cadenas dentro de una matriz basada en índice cero resultsen el que la URL que desea es la tercera, por lo que desea hacer alert(result[2])

    – MilkyWayJoe

    24 de diciembre de 2012 a las 19:35


  • La mayoría de las respuestas mencionan $(row).val().split('|')…Pero el hecho es que funciones como $(row).val() o $(row).text() son aplicables solo para elementos DOM. Esta es una variable que, como indicó, proviene de una respuesta AJAX. No hay absolutamente ninguna necesidad de usar jQuery para esto, ya que es solo una manipulación de cadenas ya disponible a través de JavaScript estándar. Solo haz row.split('|')[2] como lo indica TJ

    – MilkyWayJoe

    24 de diciembre de 2012 a las 19:58

  • el problema no es el split método. El error de sytax se debe al hecho de que OP no puso comillas alrededor de la cadena. Me pregunto por qué nadie lo mencionó.

    – Cristian Traina

    15 de julio de 2019 a las 7:28

avatar de usuario
gabriele petrioli

los split método creará una matriz. Por lo tanto, debe acceder al tercer elemento en su caso.

(las matrices están indexadas en 0) Necesitas acceder result[2] para obtener la url

var result = $(row).text().split('|');
alert( result[2] );

No nos das suficiente información para saber qué row es, exactamente… Entonces, dependiendo de cómo adquieras la variable row es posible que deba realizar una de las siguientes acciones.

  • si row entonces es una cadena row.split('|');
  • si es un elemento DOM entonces $(row).text().split('|');
  • si es un input elemento entonces $(row).val().split('|');

  • Jan, acaba de actualizar la respuesta… pero tendrás que decirnos dónde obtuviste row de..

    – Gabriele Petrioli

    24 de diciembre de 2012 a las 19:38

  • no se que es row pero yo se que $(...) es un objeto jQuery.

    – John Dvorak

    24 de diciembre de 2012 a las 19:39

avatar de usuario
Sushanth —

Split crea una matriz. Puede acceder a los valores individuales utilizando un índice.

var result=$(row).val().split('|')[2]
alert(result);

O

var result=$(row).val().split('|');
alert(result[2]);

Si es elemento de entrada entonces necesitas usar $(row).val() para sacar el valor..

De lo contrario, tendría que usar $(row).text() o $(row).html()

  • tenga en cuenta que $(...) es un objeto jQuery. JQuery no tiene la split método.

    – John Dvorak

    24 de diciembre de 2012 a las 19:40

La función de división separa cada parte del texto con el separador que proporciona, y proporcionó “|”. Entonces, el resultado sería una matriz que contiene “Shimla”, “1” y “http://vinspro.org/travel/ind/”. Puede manipular eso para obtener el tercero, “http://vinspro.org/travel/ind/”, y aquí hay un ejemplo:

var str="Shimla|1|http://vinspro.org/travel/ind/";
var n = str.split('|');
alert(n[2]); 

Como se mencionó en otras respuestas, este código diferiría dependiendo de si fuera una cadena ($(str).split(‘|’);), una entrada de cuadro de texto ($(str).val().split(‘|’) );), o un elemento DOM ($(str).text().split(‘|’);).

También puede usar JavaScript simple para obtener todo el contenido después de 9 caracteres, que sería “http://vinspro.org/travel/ind/”. Aquí hay un ejemplo:

var str="Shimla|1|http://vinspro.org/travel/ind/";
var n=str.substr(9);
alert(n);

  • su primera versión no funcionará… si el texto no se puede convertir a html (necesita etiquetas para ser) el jquery lo tratará como un selector y devolverá un objeto vacío. Asi que .text() on devolverá una cadena vacía.

    – Gabriele Petrioli

    24 de diciembre de 2012 a las 19:53

  • @GabyakaG.Petrioli Depende. si es una cadena entonces es split(‘|’); si es un elemento DOM entonces text().split(‘|’); si es un elemento de entrada entonces val().split(‘|’);

    usuario752723

    24 de diciembre de 2012 a las 19:59


  • Sí, pero en tu primer ejemplo estableces str ser una cadena simple, y luego lo hiciste $(str).text() que volvería "". ahora lo quitaste .text() pero dejaste el $(str) que devolvería un objeto jquery vacío. En su primer ejemplo, debería ser str.split('|')

    – Gabriele Petrioli

    24 de diciembre de 2012 a las 20:05

avatar de usuario
TJ-

¿Qué es fila?

Cualquiera de estos podría ser correcto.

1) Supongo que captura su respuesta ajax en una variable de javascript ‘fila’. Si ese es el caso, esto sería cierto.

var result=row.split('|');
    alert(result[2]);

de lo contrario

2) Use esto donde $(row) es un jQuery objeto.

var result=$(row).val().split('|');
    alert(result[2]);

[As mentioned in the other answer, you may have to use $(row).val() or $(row).text() or $(row).html() etc. depending on what $(row) is.]

si la identificación de su entrada es la siguiente

<input type="text"  id='kg_row1' >

entonces puedes explotar/dividir lo anterior con la siguiente función de dividir en jquery

  var kg_id = $(this).attr("id");
  var getvalues =kg_id.split("_");
  var id = getvalues[1];

avatar de usuario
samuel felipe

Prueba esto

var data="allow~5"; 
var result=data.split('~');

RESULTADO

alert(result[0]);

¿Ha sido útil esta solución?