Format adalah untuk mengubah jenis data apa pun menjadi string melalui operasi format. Misalnya, berikut ini
Salinan kode adalah sebagai berikut:
<script>
console.log (chopper.format ('{0} - {1} - {2}', 12, 24, 25)); // output "12 - 24 - 25"
</script>
Berikut adalah kode lengkap yang dapat disalin ke dalam proyek Anda sendiri.
Salinan kode adalah sebagai berikut:
<! Doctype html>
<Html>
<head>
<meta http-equiv = "tipe konten" content = "text/html; charset = utf-8">
</head>
<body>
<skrip src = "http://code.jquery.com/jquery-1.9.1.min.js"> </script>
<script>
(fungsi() {
var chopper = window.chopper = window.chopper || {Cultures: {}},
Matematika = Matematika,
formatRegExp = // {(/d+) (: [^/}]+)?/}/g,
Fungsi = "fungsi",
String = "string",
Angka = "angka",
Objek = "objek",
Null = "null",
Boolean = "boolean",
Tidak terdefinisi = "tidak terdefinisi",
slice = [] .slice,
Globalize = window.globalize,
StandardFormatRegExp =/^(n | c | p | e) (/d*) $/i,
literalregexp = /(//..)|(ajah'$ mendengarkan
commarexp = //,/g,
Kosong = "",
Point = ".",
Koma = ",",
Sharp = "#",
Nol = "0",
Placeholder = "??",
En = "en-us",
ObjectToString = {} .toString;
// Budaya
chopper.cultures ["en-us"] = {
Nama: en,
NumberFormat: {
Pola: ["-n"],
desimal: 2,
",": ",",
".": ".",
Mengelompokkan: [3],
Persen: {
Pola: ["-n %", "n %"],
desimal: 2,
",": ",",
".": ".",
Mengelompokkan: [3],
Simbol: "%"
},
mata uang: {
Pola: ["($ n)", "$ n"],
desimal: 2,
",": ",",
".": ".",
Mengelompokkan: [3],
Simbol: "$"
}
},
Kalender: {
Standar: {
Hari: {
Nama: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"],
NamesAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
Namesshort: ["su", "mo", "tu", "we", "th", "fr", "sa"]
},
Bulan: {
Nama: ["Januari", "Februari", "March", "April", "Mei", "June", "Juli", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
NamesAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
},
AM: ["Am", "AM", "AM"],
PM: ["PM", "PM", "PM"],
Pola: {
D: "M/D/YYYY",
D: "DDDD, MMMM DD, YYYY",
F: "DDDD, MMMM DD, YYYY H: MM: SS TT",
G: "M/D/YYYY H: MM TT",
G: "M/D/YYYY H: MM: SS TT",
G: "Mmmm DD",
G: "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
}
}
};
fungsi findCulture (budaya) {
if (budaya) {
if (culture.numberform) {
budaya kembali;
}
if (typeOf culture === string) {
Var Cultures = Chopper.Cultures;
Budaya mengembalikan [budaya] || Budaya [Culture.split ("-") [0]] || batal;
}
kembali nol;
}
kembali nol;
}
fungsi getCulture (budaya) {
if (budaya) {
budaya = findCulture (budaya);
}
Budaya mengembalikan || 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! == tidak ditentukan) {
Culture = FindCulture (Culturename) || budaya [en];
Culture.calendar = Culture.calendars.Standard;
Budaya.Current = Budaya;
if (Globalize &&! Globalize.Load) {
ExpandNumberFormat (Culture.NumberFormat);
}
} kalau tidak {
kultur kembali. Current;
}
};
Chopper.Culture (en);
// format nomor
Fungsi FormatNumber (angka, format, budaya) {
budaya = getCulture (budaya);
var numberformat = culture.numberformat,
groupsize = numberFormat.groupsize [0],
GroupsEparator = NumberFormat [Koma],
desimal = numberformat [point],
precision = numberFormat.decimals,
pola = numberFormat.pattern [0],
literal = [],
simbol,
iscurrency, ispercent,
Presisi khusus,
format dan perspsisi,
negatif = angka <0,
bilangan bulat,
pecahan,
integerlength,
fractionLength,
Penggantian = kosong,
nilai = kosong,
idx,
panjang,
CH,
Hasgroup,
format hasnegative,
decimalindex,
SharpIndex,
Zeroindex,
Haszero, Hassharp,
Persentindex,
mata uang,
startzeroindex,
mulai = -1,
akhir;
// mengembalikan string kosong jika tidak ada nomor
if (number === tidak terdefinisi) {
kembali kosong;
}
if (! isFinite (angka)) {
nomor pengembalian;
}
// Jika tidak ada format maka kembalikan number.toString () atau number.tolocalestring () jika kultur.name tidak didefinisikan
if (! format) {
kembalikan budaya.name.length? number.tolocalestring (): number.toString ();
}
formatAndPrecision = StandardFormatRegExp.exec (format);
// pemformatan standar
if (formatAndprecision) {
format = formatAndprecision [1] .tolowercase ();
isCurrency = format === "c";
isPercent = format === "p";
if (isCurrency || ispercent) {
// Dapatkan informasi format nomor tertentu jika format adalah mata uang atau persen
NumberFormat = isCurrency? numberFormat.currency: numberFormat.percent;
groupsize = numberFormat.groupsize [0];
groupsEparator = numberFormat [koma];
desimal = numberFormat [point];
precision = numberFormat.decimals;
simbol = numberFormat.symbol;
pola = numberFormat.pattern [negatif? 0: 1];
}
CustomPrecision = FormatAndPrecision [2];
if (CustomPrecision) {
precision = +Custom Precision;
}
// Nomor pengembalian dalam format eksponensial
if (format === "e") {
Mengembalikan Presisi Kustom? number.toExponential (precision): number.toExponential (); // toexponential () dan toexponential (tidak terdefinisi) berbeda dalam FF #653438.
}
// Gandakan jika formatnya adalah persen
if (isPercent) {
Angka *= 100;
}
angka = bulat (angka, presisi);
negatif = angka <0;
angka = number.split (titik);
integer = angka [0];
fraksi = angka [1];
// Kecualikan "-" Jika angka negatif.
if (negatif) {
integer = integer.substring (1);
}
nilai = integer;
integerlength = integer.length;
// Tambahkan pemisah grup ke nomor jika cukup lama
if (integerlength> = groupize) {
nilai = kosong;
untuk (idx = 0; idx <integerlength; idx ++) {
if (idx> 0 && (integerlength - idx) % groupize === 0) {
Nilai += GroupsEparator;
}
nilai += integer.charat (idx);
}
}
if (fraction) {
nilai + = desimal + fraksi;
}
if (format === "n" &&! negatif) {
nilai pengembalian;
}
angka = kosong;
untuk (idx = 0, panjang = pola.length; idx <panjang; idx ++) {
ch = pola.charat (idx);
if (ch === "n") {
angka += nilai;
} lain jika (ch === "$" || ch === "%") {
angka += simbol;
} kalau tidak {
Angka += ch;
}
}
nomor pengembalian;
}
// pemformatan khusus
//
// format terpisah berdasarkan bagian.
// buat angka positif
if (negatif) {
angka = -number;
}
if (format.indexof ("'")> -1 || format.indexof ("/" ")> -1 || format.indexof (" // ")> -1) {
format = format.replace (literalregexp, function (match) {
var quotechar = match.charat (0) .replace ("//", ""),
literal = match.slice (1) .replace (quotechar, "");
literals.push (literal);
Placeholder pengembalian;
});
}
format = format.split (";");
if (negatif && format [1]) {
// Dapatkan format negatif
format = format [1];
hasnegativeFormat = true;
} else if (number === 0) {
// Format untuk nol
format = format [2] || format [0];
if (format.indexof (sharp) == -1 && format.indexof (nol) == -1) {
// return format jika string konstan.
format pengembalian;
}
} kalau tidak {
format = format [0];
}
persentIndex = format.indexOf ("%");
CurrencyIndex = format.indexOf ("$");
isPercent = PersentIndex! = -1;
isCurrency = CurrencyIndex! = -1;
// gandakan nomor jika format memiliki persen
if (isPercent) {
Angka *= 100;
}
if (isCurrency && format [CurrencyIndex - 1] === "//") {
format = format.split ("//"). gabung ("");
iscurrency = false;
}
if (isCurrency || ispercent) {
// Dapatkan informasi format nomor tertentu jika format adalah mata uang atau persen
NumberFormat = isCurrency? numberFormat.currency: numberFormat.percent;
groupsize = numberFormat.groupsize [0];
groupsEparator = numberFormat [koma];
desimal = numberFormat [point];
precision = numberFormat.decimals;
simbol = numberFormat.symbol;
}
hasgroup = format.indexof (koma)> -1;
if (hasgroup) {
format = format.replace (commaregexp, kosong);
}
decimalIndex = format.indexof (point);
panjang = format.length;
if (decimalIndex! = -1) {
fraksi = number.toString (). split ("e");
if (fraction [1]) {
fraksi = bundar (bilangan, math.abs (fraksi [1]));
} kalau tidak {
fraksi = fraksi [0];
}
fraksi = fraction.split (titik) [1] || KOSONG;
ZeroIndex = format.LastIndexOf (nol) - decimalIndex;
SharpIndex = format.LastIndexOf (Sharp) - DecimalIndex;
haszero = nolIndex> -1;
hassharp = sharpIndex> -1;
idx = fraction.length;
if (! haszero &&! hassharp) {
format = format.substring (0, decimalIndex) + format.substring (decimalIndex + 1);
panjang = format.length;
decimalIndex = -1;
idx = 0;
} if (haszero && nolIndex> sharpIndex) {
idx = ZeroIndex;
} lain jika (SharpIndex> ZeroIndex) {
if (hassharp && idx> sharpIndex) {
idx = SharpIndex;
} lain if (haszero && idx <zeroIndex) {
idx = ZeroIndex;
}
}
if (idx> -1) {
angka = bundar (angka, idx);
}
} kalau tidak {
angka = bulat (angka);
}
sharpIndex = format.indexof (Sharp);
startzeroIndex = nolIndex = format.indexof (nol);
// Tentukan indeks placeholder digit pertama
if (SharpIndex == -1 && ZeroIndex! = -1) {
start = nolIndex;
} else if (sharpIndex! = -1 && nolIndex == -1) {
mulai = SharpIndex;
} kalau tidak {
mulai = SharpIndex> ZeroIndex? ZeroIndex: SharpIndex;
}
SharpIndex = format.LastIndexOf (Sharp);
ZeroIndex = format.LastIndexOf (nol);
// Tentukan indeks placeholder digit terakhir
if (SharpIndex == -1 && ZeroIndex! = -1) {
end = ZeroIndex;
} else if (sharpIndex! = -1 && nolIndex == -1) {
end = SharpIndex;
} kalau tidak {
end = SharpIndex> ZeroIndex? SharpIndex: ZeroIndex;
}
if (start == panjang) {
akhir = mulai;
}
if (mulai! = -1) {
value = number.toString (). split (point);
integer = nilai [0];
fraksi = nilai [1] || KOSONG;
integerlength = integer.length;
fractionLength = fraction.length;
if (negatif && (angka * -1)> = 0) {
negatif = false;
}
// Tambahkan pemisah grup ke nomor jika cukup lama
if (hasgroup) {
if (integerlength === Groupize && integerlength <decimalIndex - startzeroIndex) {
Integer = GroupsEparator + Integer;
} lain jika (integerlength> groupize) {
nilai = kosong;
untuk (idx = 0; idx <integerlength; idx ++) {
if (idx> 0 && (integerlength - idx) % groupize === 0) {
Nilai += GroupsEparator;
}
nilai += integer.charat (idx);
}
integer = nilai;
}
}
angka = format.substring (0, mulai);
if (negatif &&! hasnegativeFormat) {
angka += "-";
}
untuk (idx = start; idx <length; idx ++) {
ch = format.charat (idx);
if (decimalIndex == -1) {
if (end - idx <integerlength) {
angka += integer;
merusak;
}
} kalau tidak {
if (ZeroIndex! = -1 && ZeroIndex <idx) {
Penggantian = kosong;
}
if ((decimalIndex - idx) <= integerlength && decimalIndex - idx> -1) {
angka += integer;
idx = decimalIndex;
}
if (decimalIndex === idx) {
angka + = (fraksi? desimal: kosong) + fraksi;
idx + = end - decimalIndex + 1;
melanjutkan;
}
}
if (ch === nol) {
Angka += ch;
Penggantian = ch;
} lain jika (ch === tajam) {
angka += penggantian;
}
}
if (end> = start) {
angka + = format.substring (end + 1);
}
// Ganti placeholder simbol
if (isCurrency || ispercent) {
nilai = kosong;
untuk (idx = 0, length = number.length; idx <length; idx ++) {
ch = number.charat (idx);
nilai += (ch === "$" || ch === "%")? Simbol: CH;
}
angka = nilai;
}
panjang = literals.length;
if (length) {
untuk (idx = 0; idx <length; idx ++) {
angka = number.replace (placeholder, literal [idx]);
}
}
}
nomor pengembalian;
}
var round = function (value, precision) {
presisi = presisi || 0;
value = value.toString (). split ('e');
value = math.round ( + (nilai [0] + 'e' + (nilai [1]? (Nilai [1] + presisi): presisi)));
value = value.toString (). split ('e');
value = + (nilai [0] + 'e' + (nilai [1]? (Nilai [1] - presisi): -precision));
value return.tofixed (presisi);
};
var tostring = fungsi (nilai, fmt, budaya) {
if (fmt) {
if (typeOf value === angka) {
Return FormatNumber (Nilai, FMT, Budaya);
}
}
nilai pengembalian! == tidak ditentukan? nilai : "";
};
if (Globalize &&! Globalize.Load) {
tostring = fungsi (nilai, format, budaya) {
if ($ .isplainObject (budaya)) {
Budaya = Budaya.Name;
}
return Globalize.format (nilai, format, budaya);
};
}
chopper.format = function (fmt) {
nilai var = argumen;
return fmt.replace (formatRegExp, function (match, index, placeholderFormat) {
nilai var = nilai [parseInt (indeks, 10) + 1];
return tostring (nilai, placeholderFormat? placeholderformat.substring (1): "");
});
};
}) ();
</script>
</body>
</html>
API:
Salinan kode adalah sebagai berikut:
chopper.format ('{0} sedang bermain {1}', 'xiaoming', 'basketball'); // output "Xiaoming bermain basket"
// harga
chopper.format ('{0: c} - {1: c}', 10, 20); // output "10.00−20.00"
// indeks
chopper.format ('index: {0: e}', 25); // output "indeks: 2.5e+1"
// persen
chopper.format ('persen: {0: p}', 25); // output "Persen: 2.500,00 %"
// desimal
chopper.format ('desimal: {0: n}', 25); // output "desimal: 25.00"
ringkasan:
Data format sering digunakan dalam pengembangan. Misalnya, kita perlu meminta informasi yang berbeda sesuai dengan variabel, tetapi templat kontennya sama, sehingga kita dapat menggunakan metode ini. Jika proyek Anda menggunakan jQuery, Anda juga dapat merangkum JavaScript di atas menjadi plugin jQuery.