Pemformatan ialah untuk menukar sebarang jenis data kepada rentetan melalui operasi format. Contohnya, di bawah
console.log(chopper.format('{0} - {1} - {2}', 12, 24, 25)); // mengeluarkan "12 - 24 - 25"
Berikut ialah kod lengkap yang boleh disalin ke dalam projek anda sendiri.
http://code.jquery.com/jquery-1.9.1.min.js">>
(fungsi() {
var chopper = window.chopper = window.chopper || { budaya: {} },
matematik = Matematik,
formatRegExp = /{(d )(:[^}] )?}/g,
FUNGSI = "fungsi",
STRING = "rentetan",
NUMBER = "nombor",
OBJEK = "objek",
NULL = "null",
BOOLEAN = "boolean",
UNDEFINED = "undefined",
hiris = [].hiris,
globalize = window.Globalize,
standardFormatRegExp = /^(n|c|p|e)(d*)$/i,
literalRegExp = /(\.)|(['][^']*[']?)|(["][^"]*["]?)/g,
komaRegExp = /,/g,
KOSONG = "",
TITIK = ".",
KOMA = ",",
SHARP = "#",
SIFAR = "0",
PEMEGANG TEMPAT = "??",
EN = "en-US",
objectToString = {}.toString;
//budaya
chopper.cultures["en-US"] = {
nama: EN,
nomborFormat: {
corak: ["-n"],
perpuluhan: 2,
",": ",",
".": ".",
Saiz kumpulan: [3],
peratus: {
corak: ["-n %", "n %"],
perpuluhan: 2,
",": ",",
".": ".",
Saiz kumpulan: [3],
simbol: "%"
},
mata wang: {
corak: ["($n)", "$n"],
perpuluhan: 2,
",": ",",
".": ".",
Saiz kumpulan: [3],
simbol: "$"
}
},
kalendar: {
standard: {
hari: {
nama: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"],
namesAbbr: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"],
namaShort: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ]
},
bulan: {
nama: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember" ],
namesAbbr: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogos", "Sep", "Okt", "Nov", "Dis" ]
},
PAGI: [ "AM", "am", "AM" ],
PM: [ "PM", "pm", "PM" ],
corak: {
d: "M/h/yyyy",
D: "dddd, MMMM dd, yyyy",
F: "dddd, MMMM dd, tttt h:mm:ss tt",
g: "M/h/yyyy h:mm tt",
G: "M/h/yyyy h:mm:ss tt",
m: "MMMM dd",
M: "MMMM dd",
s: "yyyy'-'MM'-'ddTHH':'mm':'ss",
t: "h:mm tt",
T: "h:mm:ss tt",
u: "yyyy'-'MM'-'dd HH':'mm':'ss'Z'",
y: "MMMM, yyyy",
Y: "MMMM, yyyy"
},
"/": "/",
":": ":",
Hari pertama: 0,
twoDigitYearMax: 2029
}
}
};
function findCulture(culture) {
jika (budaya) {
if (culture.numberFormat) {
kembali budaya;
}
jika (jenis budaya === STRING) {
var cultures = chopper.cultures;
kembalikan budaya[budaya] || cultures[culture.split("-")[0]] || null;
}
kembalikan null;
}
kembalikan null;
}
fungsi getCulture(budaya) {
jika (budaya) {
budaya = findCulture(budaya);
}
budaya kembali || chopper.cultures.current;
}
fungsi expandNumberFormat(numberFormat) {
numberFormat.groupSizes = numberFormat.groupSize;
numberFormat.percent.groupSizes = numberFormat.percent.groupSize;
numberFormat.currency.groupSizes = numberFormat.currency.groupSize;
}
chopper.culture = function(cultureName) {
var cultures = chopper.cultures, culture;
if (cultureName !== undefined) {
culture = findCulture(cultureName) || budaya[MS];
budaya.kalendar = budaya.kalendar.standard;
budaya.semasa = budaya;
jika (globalisasikan && !globalisasikan.muatkan) {
expandNumberFormat(culture.numberFormat);
}
} lain {
kembalikan budaya.semasa;
}
};
chopper.culture(EN);
//pemformatan nombor
fungsi formatNombor(nombor, format, budaya) {
budaya = getCulture(budaya);
var numberFormat = culture.numberFormat,
groupSize = numberFormat.groupSize[0],
groupSeparator = numberFormat[COMMA],
perpuluhan = nomborFormat[POINT],
ketepatan = numberFormat.decimals,
corak = numberFormat.pattern[0],
literal = [],
simbol,
isCurrency, isPercent,
customPrecision,
formatAndPrecision,
negatif = nombor < 0,
integer,
pecahan,
integerLength,
FractionLength,
pengganti = KOSONG,
nilai = KOSONG,
idx,
panjang,
ch,
hasGroup,
mempunyaiFormat Negatif,
indeks perpuluhan,
sharpIndex,
zeroIndex,
hasZero, hasSharp,
percentIndex,
currencyIndex,
startZeroIndex,
mula = -1,
tamat;
//kembali rentetan kosong jika tiada nombor
jika (nombor === tidak ditentukan) {
kembali KOSONG;
}
jika (!isFinite(nombor)) {
pulangkan nombor;
}
//jika tiada format maka kembalikan number.toString() atau number.toLocaleString() jika culture.name tidak ditakrifkan
jika (!format) {
kembalikan budaya.nama.panjang ? number.toLocaleString() : number.toString();
}
formatAndPrecision = standardFormatRegExp.exec(format);
// pemformatan standard
jika (formatAndPrecision) {
format = formatAndPrecision[1].toLowerCase();
isCurrency = format === "c";
isPeratus = format === "p";
jika (isCurrency || isPeratus) {
//dapatkan maklumat format nombor tertentu jika format ialah mata wang atau peratus
numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;
groupSize = numberFormat.groupSize[0];
groupSeparator = numberFormat[COMMA];
perpuluhan = nomborFormat[POINT];
ketepatan = nomborFormat.perpuluhan;
simbol = nomborFormat.simbol;
pattern = numberFormat.pattern[negatif ? 0 : 1];
}
customPrecision = formatAndPrecision[2];
jika (customPrecision) {
ketepatan = customPrecision;
}
//kembali nombor dalam format eksponen
jika (format === "e") {
kembalikan customPrecision ? number.toExponential(precision): number.toExponential(); // toExponential() dan toExponential(undefined) berbeza dalam FF #653438.
}
// darab jika format ialah peratus
jika (ialahPeratus) {
nombor *= 100;
}
nombor = bulat(nombor, ketepatan);
negatif = nombor < 0;
nombor = nombor.pecah(POINT);
integer = nombor[0];
pecahan = nombor[1];
//kecualikan "-" jika nombor negatif.
jika (negatif) {
integer = integer.substring(1);
}
nilai = integer;
integerLength = integer.length;
//tambah pemisah kumpulan pada nombor jika cukup panjang
if (integerLength >= groupSize) {
nilai = KOSONG;
untuk (idx = 0; idx < integerLength; idx ) {
if (idx > 0 && (integerLength - idx) % groupSize === 0) {
nilai = groupSeparator;
}
nilai = integer.charAt(idx);
}
}
jika (pecahan) {
nilai = pecahan perpuluhan;
}
jika (format === "n" && !negatif) {
nilai pulangan;
}
nombor = KOSONG;
untuk (idx = 0, length = pattern.length; idx < length; idx ) {
ch = pattern.charAt(idx);
jika (ch === "n") {
nombor = nilai;
} lain jika (ch === "$" || ch === "%") {
nombor = simbol;
} lain {
nombor = ch;
}
}
pulangkan nombor;
}
//pemformatan tersuai
//
//format berasingan mengikut bahagian.
//jadikan nombor positif
jika (negatif) {
nombor = -nombor;
}
jika (format.indexOf("'") > -1 || format.indexOf(""") > -1 || format.indexOf("\") > -1) {
format = format.replace(literalRegExp, fungsi (padanan) {
var quoteChar = match.charAt(0).replace("\", ""),
literal = match.slice(1).replace(quoteChar, "");
literals.push(literal);
pulangkan PEMEGANG TEMPAT;
});
}
format = format.split(";");
jika (negatif && format[1]) {
//dapatkan format negatif
format = format[1];
hasNegativeFormat = benar;
} lain jika (nombor === 0) {
//format untuk sifar
format = format[2] || format[0];
jika (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {
//format pulangan jika ia adalah pemalar rentetan.
format pulangan;
}
} lain {
format = format[0];
}
percentIndex = format.indexOf("%");
currencyIndex = format.indexOf("$");
isPercent = percentIndex != -1;
isCurrency = currencyIndex != -1;
//darab nombor jika format mempunyai peratus
jika (ialahPeratus) {
nombor *= 100;
}
if (isCurrency && format[currencyIndex - 1] === "\") {
format = format.split("\").sertai("");
isCurrency = palsu;
}
jika (isCurrency || isPeratus) {
//dapatkan maklumat format nombor tertentu jika format ialah mata wang atau peratus
numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;
groupSize = numberFormat.groupSize[0];
groupSeparator = numberFormat[COMMA];
perpuluhan = nomborFormat[POINT];
ketepatan = nomborFormat.perpuluhan;
simbol = nomborFormat.simbol;
}
hasGroup = format.indexOf(COMMA) > -1;
jika (hasGroup) {
format = format.replace(commaRegExp, EMPTY);
}
decimalIndex = format.indexOf(POINT);
panjang = format.panjang;
jika (Index perpuluhan != -1) {
pecahan = number.toString().split("e");
jika (pecahan[1]) {
pecahan = bulat(nombor, Math.abs(pecahan[1]));
} lain {
pecahan = pecahan[0];
}
pecahan = pecahan.pecah(POINT)[1] || KOSONG;
zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;
sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;
hasZero = zeroIndex > -1;
hasSharp = sharpIndex > -1;
idx = pecahan.panjang;
jika (!hasZero && !hasSharp) {
format = format.substring(0, decimalIndex) format.substring(decimalIndex 1);
panjang = format.panjang;
indeks perpuluhan = -1;
idx = 0;
} jika (hasZero && zeroIndex > sharpIndex) {
idx = zeroIndex;
} lain jika (sharpIndex > zeroIndex) {
jika (hasSharp && idx > sharpIndex) {
idx = sharpIndex;
} lain jika (hasZero && idx < zeroIndex) {
idx = zeroIndex;
}
}
jika (idx > -1) {
nombor = bulat(nombor, idx);
}
} lain {
nombor = bulat(nombor);
}
sharpIndex = format.indexOf(SHARP);
startZeroIndex = zeroIndex = format.indexOf(ZERO);
//takrifkan indeks pemegang tempat digit pertama
jika (sharpIndex == -1 && zeroIndex != -1) {
mula = zeroIndex;
} lain jika (sharpIndex != -1 && zeroIndex == -1) {
mula = sharpIndex;
} lain {
mula = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;
}
sharpIndex = format.lastIndexOf(SHARP);
zeroIndex = format.lastIndexOf(ZERO);
//takrifkan indeks pemegang tempat digit terakhir
jika (sharpIndex == -1 && zeroIndex != -1) {
hujung = zeroIndex;
} lain jika (sharpIndex != -1 && zeroIndex == -1) {
hujung = sharpIndex;
} lain {
hujung = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;
}
jika (mula == panjang) {
tamat = mula;
}
jika (mula != -1) {
value = number.toString().split(POINT);
integer = nilai[0];
pecahan = nilai[1] || KOSONG;
integerLength = integer.length;
fractionLength = pecahan.panjang;
jika (negatif && (nombor * -1) >= 0) {
negatif = palsu;
}
//tambah pemisah kumpulan pada nombor jika cukup panjang
jika (hasGroup) {
if (IntegerLength === groupSize && integerLength < decimalIndex - startZeroIndex) {
integer = kumpulan Pemisah integer;
} lain jika (integerLength > groupSize) {
nilai = KOSONG;
untuk (idx = 0; idx < integerLength; idx ) {
if (idx > 0 && (integerLength - idx) % groupSize === 0) {
nilai = groupSeparator;
}
nilai = integer.charAt(idx);
}
integer = nilai;
}
}
nombor = format.substring(0, mula);
jika (negatif && !mempunyaiFormat Negatif) {
nombor = "-";
}
untuk (idx = mula; idx < panjang; idx ) {
ch = format.charAt(idx);
jika (Index perpuluhan == -1) {
jika (akhir - idx < integerLength) {
nombor = integer;
rehat;
}
} lain {
jika (zeroIndex != -1 && zeroIndex < idx) {
pengganti = KOSONG;
}
if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {
nombor = integer;
idx = indeks perpuluhan;
}
if (decimalIndex === idx) {
nombor = (pecahan ? perpuluhan : KOSONG) pecahan;
idx = akhir - decimalIndex 1;
teruskan;
}
}
jika (ch === SIFAR) {
nombor = ch;
penggantian = ch;
} lain jika (ch === SHARP) {
Zahl = Ersatz;
}
}
if (end >= start) {
number = format.substring(end 1);
}