Digamos que tiene una cadena: "La vaca ABC saltó sobre XYZ la luna" y quiere usar jQuery para obtener la subcadena entre "ABC" y "XYZ", ¿cómo haría esto? ? La subcadena debe ser "vaca saltó encima". ¡Muchas gracias!Usando jQuery para encontrar una subcadena
Respuesta
Esto no tiene nada que ver con jQuery, que es principalmente para el cruce DOM y la manipulación. ¿Quieres una expresión regular simple:
var str = "The ABC cow jumped over XYZ the moon";
var sub = str.replace(/^.*ABC(.*)XYZ.*$/m, '$1');
La idea es que estés usando un String.replace con una expresión regular que coincide con sus delimitadores de apertura y cierre, y la sustitución de toda la cadena con la parte compensada entre los delimitadores.
El primer argumento es una expresión regular. El m
posterior provoca que coincida con varias líneas, lo que significa que el texto entre ABC
y XYZ
puede contener líneas nuevas. El resto se descompone de la siguiente manera:
^
inicio al comienzo de la cadena.*
una serie de 0 o más caracteresABC
su delimitador de apertura(.*)
coinciden con una serie de 0 o más caracteresXYZ
su delimitador de cierre.*
una serie de 0 o más caracteres$
coincidencia con el final de la cadena
El segundo parámetro, la cadena de reemplazo, es '$ 1'. replace
sustituirá en submatch entre paréntesis de su exprsesion regular - la parte (.*)
de arriba. Por lo tanto, el valor de retorno es la cadena completa reemplazar con las partes entre los delimitadores.
Pensé que jQuery tiene funciones: subcadena e indexof, y que estos podrían ser utilizados juntos para obtener la subcadena. – Steve
Podría explicar brevemente cómo funciona esto: str.replace (/^.* ABC (. *) XYZ. * $ /, '$ 1'); – Steve
@Steve - Es JavaScript que tiene funciones como subcadena e indexof. jQuery se ocupa principalmente del DOM de una página. –
Puede que no necesite usar jQuery en este caso. Me gustaría hacer algo como esto:
function between(str, left, right) {
if(!str || !left || !right) return null;
var left_loc = str.indexOf(left);
var right_loc = str.indexOf(right);
if(left_loc == -1 || right_loc == -1) return null;
return str.substring(left_loc + left.length, right_loc);
}
No se garantiza que el código anterior es libre de errores, pero la idea es utilizar la función estándar substring(). Según mi experiencia, estos tipos de funciones funcionan igual en todos los navegadores.
Solo para mostrarle cómo usaría jQuery y meagar's regex. Digamos que usted tiene una página HTML con el P
etiqueta siguiente:
<p id="grabthis">The ABC cow jumped over XYZ the moon</p>
para agarrar la cuerda, se utilizaría la siguiente mezcla jQuery/JavaScript (suena un poco estúpido, ya que jQuery es Javascript, pero véase jQuery como una biblioteca JavaScript DOM):
$(document).ready(function() { // Wait until the document has been fully loaded
var pStr=$("#grabthis").text(); // Grab the text from the P tag and put it into a JS variable
var subStr=pStr.replace(/^.*ABC(.*)XYZ.*$/m, '$1'); // Run the regex to grab the middle string
alert(subStr); // Output the grabbed middle string
});
O la versión más corta:
$(document).ready(function() {
alert($("#grabthis").text().replace(/^.*ABC(.*)XYZ.*$/m, '$1'));
});
la reemplazar la función es una función de JavaScript. Espero que esto aclare la confusión.
Meagar, su explicación es genial, y explica claramente a quién le funciona.
Sólo unas pocas preguntas de menor importancia:
son el paréntesis() se requiere sólo como una manera de indicar un subcoincidencia en el segundo parámetro de la función relpace o serían esto también identificar los subcoincidencias:/^. *A B C. XYZ. $/pero no funciona para lo que estamos tratando de hacer en este caso?
¿Este expresiones regulares tienen 7 subcoincidencias:...
^
*
ABC
*
XYZ
*
$
- ¿El $ 1 significa usar el fi ¿primer submatch entre paréntesis? Al principio pensé que podría significar usar la segunda subcoincidencia de la serie (la primera es $ 0).
Gracias,
Steve
- 1. Extienda una subcadena usando PowerShell
- 2. Encontrar una subcadena en un objeto NSString
- 3. Algoritmo para encontrar una subcadena común en N series
- 4. Cómo encontrar la subcadena común más larga usando C++
- 5. Uso de Java para encontrar subcadena de una cadena grande usando expresiones regulares
- 6. ¿Cómo encontrar la subcadena común más larga usando árboles?
- 7. Eliminar subcadena usando Python
- 8. encontrar la posición de una subcadena en una cadena
- 9. Buscar subcadena en una cadena usando C#
- 10. Encontrar el final de una coincidencia de subcadena en .NET
- 11. Usando JQuery para encontrar la siguiente fila de la tabla
- 12. subcadena usando el comando bat
- 13. Cómo encontrar texto y reemplazarlo usando jQuery
- 14. Encontrar los elementos del diccionario cuyos partidos una subcadena clave
- 15. ¿Prueba una cadena para una subcadena?
- 16. ¿Cómo eliminar una subcadena de una cadena usando PHP?
- 17. ¿Cómo encontrar los duplicados en una matriz usando jQuery
- 18. Buscar subcadena dentro de una entidad usando objectify
- 19. Sustituir una subcadena con otra subcadena
- 20. usando jQuery para establecer CKEditor Valor
- 21. regex para buscar la subcadena
- 22. Para encontrar toda la subcadena que se repite en una cadena dada
- 23. Python: Encontrar una clave (cadena) en un diccionario que contenga una subcadena
- 24. Extracción subcadena de cadena usando sed
- 25. usando jquery para encontrar todas las td en una tabla por posición de columna
- 26. Cómo encontrar una posición de una subcadena dentro de una cadena con coincidencia difusa
- 27. Usando subcadena en el informe de cristal
- 28. Javascript - cómo reemplazar una subcadena?
- 29. ¿Cómo encontrar la subcadena dentro de una cadena (o cómo grep una variable)?
- 30. Compruebe si una cadena contiene una subcadena
En primer lugar, no utiliza jQuery para hacer la manipulación de cadenas - que es Javascript/ECMAScript. En segundo lugar, ¿puede ser más específico con respecto a la lógica utilizada para tomar esa cadena? ¿Hay un patrón? –
Pregunta para jQuery no etiquetado con jQuery –
Bueno, de todos modos, ¿por qué necesita jQuery? no puede simple javascript trabajar para usted –