Le formatage consiste à convertir tout type de données en chaîne via des opérations de formatage. Par exemple, ci-dessous Copier le code Le code est le suivant : <br> console.log(chopper.format('{0} - {1} - {2}', 12, 24, 25)); // affiche "12 - 24 - 25"<br> Ce qui suit est un code complet qui peut être copié dans votre propre projet. Copier le code Le code est le suivant : http://code.jquery.com/jquery-1.9.1.min.js">> <br> (fonction() {<br> var chopper = window.chopper = window.chopper || { cultures : {} },<br> maths = Mathématiques,<br> formatRegExp = /{(d )(:[^}] )?}/g,<br> FONCTION = "fonction",<br> STRING = "chaîne",<br> NOMBRE = "numéro",<br> OBJET = "objet",<br> NULL = "nul",<br> BOOLÉEN = "booléen",<br> NON DÉFINI = "indéfini",<br> tranche = [].slice,<br> globalize = window.Globalize,<br> standardFormatRegExp = /^(n|c|p|e)(d*)$/i,<br> literalRegExp = /(<a href="file://%5C.)%7C(%5B'%5D%5B%5E'%5D*%5B'%5D?)%7C(%5B%22%5D%5B%5E%22%5D*%5B%22%5D?)/g">\.)|(['][^']*[']?)|(["][^"]*["]?)/g</a>,<br> virguleRegExp = //,/g,<br> VIDE = "",<br> POINT = ".",<br> VIRGULE = ",",<br> FORTE = "#",<br> ZÉRO = "0",<br> PLACEHOLDER = "??",<br> FR = "en-US",<br> objectToString = {}.toString;<br> //cultures<br> chopper.cultures["en-US"] = {<br> nom : FR,<br> nombreFormat : {<br> modèle : ["-n"],<br> décimales : 2,<br> ",": ",",<br> ".": ".",<br> taille du groupe : [3],<br> pour cent : {<br> modèle : ["-n %", "n %"],<br> décimales : 2,<br> ",": ",",<br> ".": ".",<br> taille du groupe : [3],<br> symbole : "%"<br> },<br> devise : {<br> motif : ["($n)", "$n"],<br> décimales : 2,<br> ",": ",",<br> ".": ".",<br> taille du groupe : [3],<br> symbole : "$"<br> ><br> },<br> calendriers : {<br> norme : {<br> jours : {<br> noms : ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],<br> nomsAbbr : ["Sun", "Mon", "Tue", "Wed", "Jeu", "Fri", "Sat"],<br> nomsCourt : [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ]<br> },<br> mois : {<br> noms : ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" ],<br> nomsAbbr : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]<br> },<br> AM : [ "AM", "am", "AM" ],<br> PM : [ "PM", "pm", "PM" ],<br> modèles : {<br> d : "M/j/aaaa",<br> D : "jjjj, MMMM jj, aaaa",<br> F : "jjjj, MMMM jj, aaaa h:mm:ss tt",<br> g : "M/j/aaaa h:mm tt",<br> G : "M/j/aaaa h:mm:ss tt",<br> m : "MMMM jj",<br> M : "MMMM jj",<br> s : "aaaa'-'MM'-'jjTHH':'mm':'ss",<br> t : "h:mm tt",<br> T : "h:mm:ss tt",<br> u : "aaaa'-'MM'-'jj HH':'mm':'ss'Z'",<br> y : "MMMM, aaaa",<br> Y : "MMMM, aaaa"<br> },<br> "/": "/",<br> ":": ":",<br> premierJour : 0,<br> twoDigitYearMax : 2029<br> ><br> ><br> };<br> fonction findCulture(culture) {<br> si (culture) {<br> si (culture.numberFormat) {<br> retour à la culture ;<br> ><br> if (type de culture === STRING) {<br> var cultures = chopper.cultures;<br> cultures de retour[culture] || cultures[culture.split("-")[0]] || nul;<br> ><br> renvoie null ;<br> ><br> renvoie null ;<br> ><br> fonction getCulture(culture) {<br> si (culture) {<br> culture = findCulture(culture);<br> ><br> culture de retour || chopper.cultures.current;<br> ><br> fonction expandNumberFormat(numberFormat) {<br> numberFormat.groupSizes = numberFormat.groupSize;<br> numberFormat.percent.groupSizes = numberFormat.percent.groupSize;<br> numberFormat.currency.groupSizes = numberFormat.currency.groupSize;<br> ><br> chopper.culture = function(cultureName) {<br> var cultures = chopper.cultures, culture;<br> if (cultureName !== non défini) {<br> culture = findCulture(cultureName) || cultures[FR];<br> culture.calendar = culture.calendars.standard;<br> cultures.current = culture;<br> if (globalize && !globalize.load) {<br> expandNumberFormat(culture.numberFormat);<br> ><br> } autre {<br> retourner cultures.current;<br> ><br> };<br> chopper.culture(FR);<br> //formatage des nombres<br> function formatNumber(nombre, format, culture) {<br> culture = getCulture(culture);<br> var numberFormat = culture.numberFormat,<br> groupSize = numberFormat.groupSize[0],<br> groupSeparator = numberFormat[COMMA],<br> décimal = nombreFormat[POINT],<br> précision = numberFormat.decimals,<br> motif = nombreFormat.pattern[0],<br> littéraux = [],<br> symbole,<br> isCurrency, isPercent,<br> précision personnalisée,<br> formatAndPrecision,<br> négatif = nombre < 0,<br /> entier,<br /> fraction,<br /> longueur entière,<br /> fractionLongueur,<br /> remplacement = VIDE,<br /> valeur = VIDE,<br /> idx,<br /> longueur,<br /> ch,<br /> hasGroup,<br /> hasNegativeFormat,<br /> Indice décimal,<br /> index pointu,<br /> zéroIndex,<br /> hasZero, hasSharp,<br /> percentIndex,<br /> Indice de devise,<br /> startZeroIndex,<br /> début = -1,<br /> fin ;<br /> // renvoie une chaîne vide s'il n'y a pas de numéro <br /> si (nombre === non défini) {<br /> retourner VIDE ;<br /> ><br /> if (!isFinite(number)) {<br /> numéro de retour ;<br /> ><br /> // s'il n'y a pas de format, renvoie number.toString() ou number.toLocaleString() si culture.name n'est pas défini<br /> si (!format) {<br /> retourner culture.nom.longueur ? nombre.toLocaleString() : nombre.toString();<br /> ><br /> formatAndPrecision = standardFormatRegExp.exec(format);<br /> // formatage standard<br /> si (formatAndPrecision) {<br /> format = formatAndPrecision[1].toLowerCase();<br /> isCurrency = format === "c";<br /> isPercent = format === "p";<br /> if (isCurrency || isPercent) {<br /> //obtient des informations spécifiques sur le format numérique si le format est une devise ou un pourcentage<br /> numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;<br /> groupSize = numberFormat.groupSize[0];<br /> groupSeparator = numberFormat[COMMA];<br /> décimal = nombreFormat[POINT];<br /> précision = numberFormat.decimals;<br /> symbole = nombreFormat.symbole;<br /> motif = numberFormat.pattern[négatif ? 0 : 1];<br /> ><br /> customPrecision = formatAndPrecision[2];<br /> si (customPrecision) {<br /> précision = customPrecision;<br /> ><br /> //renvoie le numéro au format exponentiel<br /> si (format === "e") {<br /> retourner customPrecision ? nombre.toExponential(precision) : nombre.toExponential(); // toExponential() et toExponential(undefined) diffèrent dans FF #653438.<br /> ><br /> // multiplie si le format est en pourcentage<br /> si (isPercent) {<br /> nombre *= 100;<br /> ><br /> nombre = rond(nombre, précision);<br /> négatif = nombre < 0;<br /> nombre = nombre.split(POINT);<br /> entier = nombre[0];<br /> fraction = nombre[1];<br /> //exclure "-" si le nombre est négatif.<br /> si (négatif) {<br /> entier = entier.substring(1);<br /> ><br /> valeur = entier ;<br /> longueur entière = entier.longueur;<br /> //ajouter un séparateur de groupe au numéro s'il est suffisamment long<br /> if (integerLength >= groupSize) {<br> valeur = VIDE ;<br> pour (idx = 0; idx < integerLength; idx ) {<br /> if (idx > 0 && (integerLength - idx) % groupSize === 0) {<br> valeur = groupSeparator;<br> ><br> valeur = entier.charAt(idx);<br> ><br> ><br> si (fraction) {<br> valeur = fraction décimale ;<br> ><br> if (format === "n" && !negative) {<br> valeur de retour ;<br> ><br> nombre = VIDE ;<br> pour (idx = 0, longueur = motif.longueur; idx < longueur; idx ) {<br /> ch = motif.charAt(idx);<br /> si (ch === "n") {<br /> nombre = valeur ;<br /> } sinon if (ch === "$" || ch === "%") {<br /> nombre = symbole ;<br /> } autre {<br /> nombre = ch;<br /> ><br /> ><br /> numéro de retour ;<br /> ><br /> //formatage personnalisé<br /> //<br /> //format séparé par sections.<br /> //rendre le nombre positif<br /> si (négatif) {<br /> nombre = -nombre;<br /> ><br /> if (format.indexOf("'") > -1 || format.indexOf(""") > -1 || format.indexOf("\") > -1) {<br> format = format.replace(literalRegExp, function (match) {<br> var quoteChar = match.charAt(0).replace("\", ""),<br> littéral = match.slice(1).replace(quoteChar, "");<br> littéraux.push(littéral);<br> retourner PLACEHOLDER ;<br> });<br> ><br> format = format.split(";");<br> if (négatif && format[1]) {<br> //obtient le format négatif<br> format = format[1];<br> hasNegativeFormat = true;<br> } sinon si (numéro === 0) {<br> //format pour les zéros<br> format = format[2] || format[0];<br> if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {<br> //format de retour s'il s'agit d'une constante de chaîne.<br> format de retour ;<br> ><br> } autre {<br> format = format[0];<br> ><br> percentIndex = format.indexOf("%");<br> monnaieIndex = format.indexOf("$");<br> isPercent = percentIndex != -1;<br> isCurrency = monnaieIndex != -1;<br> //multiplier le nombre si le format a un pourcentage<br> si (isPercent) {<br> nombre *= 100;<br> ><br> if (isCurrency && format[currencyIndex - 1] === "\") {<br> format = format.split("<a href="file://%5C%22).join">\").join</a>("");<br> isCurrency = faux;<br> ><br> if (isCurrency || isPercent) {<br> //obtient des informations spécifiques sur le format numérique si le format est une devise ou un pourcentage<br> numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;<br> groupSize = numberFormat.groupSize[0];<br> groupSeparator = numberFormat[COMMA];<br> décimal = nombreFormat[POINT];<br> précision = numberFormat.decimals;<br> symbole = nombreFormat.symbole;<br> ><br> hasGroup = format.indexOf(COMMA) > -1;<br> si (hasGroup) {<br> format = format.replace(commaRegExp, EMPTY);<br> ><br> decimalIndex = format.indexOf(POINT);<br> longueur = format.longueur;<br> if (decimalIndex != -1) {<br> fraction = number.toString().split("e");<br> si (fraction[1]) {<br> fraction = rond(nombre, Math.abs(fraction[1]));<br> } autre {<br> fraction = fraction[0];<br> ><br> fraction = fraction.split(POINT)[1] || VIDE;<br> zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;<br> sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;<br> hasZero = zeroIndex > -1;<br> hasSharp = SharpIndex > -1;<br> idx = fraction.longueur;<br> si (!hasZero && !hasSharp) {<br> format = format.substring(0, decimalIndex) format.substring(decimalIndex 1);<br> longueur = format.longueur;<br> Indice décimal = -1;<br> idx = 0;<br> } if (hasZero && zeroIndex > sharpIndex) {<br> idx = zéroIndex;<br> } sinon si (sharpIndex > zeroIndex) {<br> if (hasSharp && idx > sharpIndex) {<br> idx = sharpIndex;<br> } else if (hasZero && idx < zeroIndex) {<br /> idx = zéroIndex;<br /> ><br /> ><br /> si (idx > -1) {<br> nombre = rond(nombre, idx);<br> ><br> } autre {<br> nombre = rond(nombre);<br> ><br> SharpIndex = format.indexOf(SHARP);<br> startZeroIndex = zeroIndex = format.indexOf(ZERO);<br> //définit l'index de l'espace réservé du premier chiffre<br> if (sharpIndex == -1 && zeroIndex != -1) {<br> début = zeroIndex;<br> } sinon if (sharpIndex != -1 && zeroIndex == -1) {<br> début = sharpIndex;<br> } autre {<br> début = SharpIndex > indice zéro ? zeroIndex : sharpIndex;<br> ><br> sharpIndex = format.lastIndexOf(SHARP);<br> zeroIndex = format.lastIndexOf(ZERO);<br> //définit l'index de l'espace réservé du dernier chiffre<br> if (sharpIndex == -1 && zeroIndex != -1) {<br> fin = zéroIndex;<br> } sinon if (sharpIndex != -1 && zeroIndex == -1) {<br> fin = sharpIndex;<br> } autre {<br> fin = SharpIndex > indice zéro ? SharpIndex : zéroIndex;<br> ><br> if (début == longueur) {<br> fin = début ;<br> ><br> if (start != -1) {<br> valeur = nombre.toString().split(POINT);<br> entier = valeur[0];<br> fraction = valeur[1] || VIDE;<br> longueur entière = entier.longueur;<br> fractionLength = fraction.length;<br> if (négatif && (nombre * -1) >= 0) {<br> négatif = faux ;<br> ><br> //ajouter un séparateur de groupe au numéro s'il est suffisamment long<br> si (hasGroup) {<br> if (integerLength === groupSize && integerLength < decimalIndex - startZeroIndex) {<br /> entier = groupSeparator entier ;<br /> } sinon si (integerLength > groupSize) {<br> valeur = VIDE ;<br> pour (idx = 0; idx < integerLength; idx ) {<br /> if (idx > 0 && (integerLength - idx) % groupSize === 0) {<br> valeur = groupSeparator;<br> ><br> valeur = entier.charAt(idx);<br> ><br> entier = valeur ;<br> ><br> ><br> nombre = format.substring(0, début);<br> if (negative && !hasNegativeFormat) {<br> nombre = "-";<br> ><br> pour (idx = début; idx < longueur; idx ) {<br /> ch = format.charAt(idx);<br /> if (decimalIndex == -1) {<br /> if (fin - idx < integerLength) {<br /> nombre = entier ;<br /> pause;<br /> ><br /> } autre {<br /> if (zeroIndex != -1 && zeroIndex < idx) {<br /> remplacement = VIDE;<br /> ><br /> if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {<br> nombre = entier ;<br> idx = decimalIndex;<br> ><br> if (decimalIndex === idx) {<br> nombre = (fraction ? décimal : VIDE) fraction;<br> idx = fin - decimalIndex 1;<br> continuer ;<br> ><br> ><br> si (ch === ZÉRO) {<br> nombre = ch;<br> remplacement = ch;<br> } sinon if (ch === SHARP) {<br> numéro = remplacement ;<br> ><br> ><br> si (fin >= début) {<br> nombre = format.substring(fin 1);<br> ><br> </div>