Estoy tratando de mover un código JavaScript de MicrosoftAjax a JQuery. Uso los equivalentes de JavaScript en MicrosoftAjax de los métodos .net populares, por ejemplo, String.format (), String.startsWith (), etc. ¿Hay equivalentes en jQuery?
javascript
jquery
string.format
Waleed Eissa
fuente
fuente
Respuestas:
El código fuente de ASP.NET AJAX está disponible para su referencia, por lo que puede seleccionarlo e incluir las partes que desea continuar usando en un archivo JS separado. O puede portarlos a jQuery.
Aquí está la función de formato ...
Y aquí están los extremos con y comienza con funciones prototipo ...
fuente
{0}{1}
,{0}
se reemplazará primero, y luego se reemplazarán todas las apariciones{1}
tanto en el texto ya sustituido como en el formato original.Esta es una variación más rápida / más simple (y prototípica) de la función que Josh publicó:
Uso:
Lo uso tanto que lo alias solo
f
, pero también puedes usar el más detalladoformat
. p.ej'Hello {0}!'.format(name)
fuente
Muchas de las funciones anteriores (excepto las de Julian Jelfs) contienen el siguiente error:
O, para las variantes que cuentan hacia atrás desde el final de la lista de argumentos:
Aquí hay una función correcta. Es una variante prototípica del código de Julian Jelfs, que hice un poco más estricto:
Y aquí hay una versión un poco más avanzada de la misma, que le permite escapar de las llaves duplicándolas:
Esto funciona correctamente:
Aquí hay otra buena implementación de Blair Mitchelmore, con un montón de buenas características adicionales: https://web.archive.org/web/20120315214858/http://blairmitchelmore.com/javascript/string.format
fuente
Hizo una función de formato que toma una colección o una matriz como argumentos
Uso:
Código:
fuente
String.prototype
?Hay una opción (algo) oficial: jQuery.validator.format .
Viene con jQuery Validation Plugin 1.6 (al menos).
Muy similar al
String.Format
encontrado en .NET.Editar enlace roto fijo.
fuente
Si está utilizando el complemento de validación, puede usar:
jQuery.validator.format("{0} {1}", "cool", "formatting") = 'cool formatting'
http://docs.jquery.com/Plugins/Validation/jQuery.validator.format#templateargumentargumentN ...
fuente
Aunque no es exactamente lo que estaba pidiendo la Q, he creado uno que es similar pero usa marcadores de posición con nombre en lugar de numerados. Personalmente prefiero tener argumentos con nombre y simplemente enviar un objeto como argumento (más detallado, pero más fácil de mantener).
Aquí hay un ejemplo de uso ...
fuente
Con un navegador moderno, compatible con EcmaScript 2015 (ES6), puede disfrutar de Template Strings . En lugar de formatear, puede inyectarle directamente el valor de la variable:
Tenga en cuenta que la cadena de la plantilla debe escribirse usando ticks de retroceso (`).
fuente
Ninguna de las respuestas presentadas hasta ahora no tiene una optimización obvia del uso del gabinete para inicializar una vez y almacenar expresiones regulares, para usos posteriores.
Además, ninguno de los ejemplos respeta la implementación de formato () si ya existe uno.
fuente
Aquí está el mío:
No es a prueba de balas, pero funciona si lo usa con sensatez.
fuente
Mucho más allá de la temporada tardía, pero acabo de mirar las respuestas dadas y mi tuppence vale la pena:
Uso:
Método:
Resultado:
fuente
Ahora puede usar Template Literals :
fuente
Aquí está mi versión que puede escapar de '{' y limpiar esos marcadores de posición no asignados.
fuente
La siguiente respuesta es probablemente la más eficiente, pero tiene la advertencia de que solo es adecuada para asignaciones de argumentos 1 a 1. Utiliza la forma más rápida de concatenar cadenas (similar a un generador de cadenas: matriz de cadenas, unidas). Este es mi propio código. Sin embargo, probablemente necesite un mejor separador.
Úselo como:
fuente
Esto viola el principio DRY, pero es una solución concisa:
fuente
fuente
No pude obtener la respuesta de Josh Stodola para trabajar, pero lo siguiente funcionó para mí. Tenga en cuenta la especificación de
prototype
. (Probado en IE, FF, Chrome y Safari):s
en realidad debería ser un clon dethis
fin de no ser un método destructivo, pero no es realmente necesario.fuente
Ampliando la gran respuesta de adamJLev anterior , aquí está la versión de TypeScript:
fuente
Tengo un plunker que lo agrega al prototipo de cadena: string.format No es tan corto como algunos de los otros ejemplos, sino que es mucho más flexible.
El uso es similar a la versión de C #:
Además, se agregó soporte para usar nombres y propiedades de objetos
fuente
También puede cerrar la matriz con reemplazos como este.
o puedes probar
bind
fuente