আরও একটি গভীর সমাধান
এর মূলটি হ'ল replace
কল। এখনও অবধি, আমি মনে করি না প্রস্তাবিত সমাধানগুলির মধ্যে নিম্নোক্ত সমস্তগুলিই পরিচালনা করে:
- পূর্ণসংখ্যার:
1000 => '1,000'
- স্ট্রিংস:
'1000' => '1,000'
- স্ট্রিংগুলির জন্য:
- দশমিকের পরে শূন্যগুলি সংরক্ষণ করে:
10000.00 => '10,000.00'
- দশমিকের আগে নেতৃস্থানীয় শূন্যগুলি ত্যাগ করে:
'01000.00 => '1,000.00'
- দশমিকের পরে কমা যোগ করবেন না:
'1000.00000' => '1,000.00000'
- নেতৃস্থানীয়
-
বা সংরক্ষণ করে +
:'-1000.0000' => '-1,000.000'
- অ-সংখ্যাযুক্ত স্ট্রিংগুলি রিটার্ন, আনমডিমিটেড:
'1000k' => '1000k'
নিম্নলিখিত ফাংশন উপরের সমস্ত করে।
addCommas = function(input){
// If the regex doesn't match, `replace` returns the string unmodified
return (input.toString()).replace(
// Each parentheses group (or 'capture') in this regex becomes an argument
// to the function; in this case, every argument after 'match'
/^([-+]?)(0?)(\d+)(.?)(\d+)$/g, function(match, sign, zeros, before, decimal, after) {
// Less obtrusive than adding 'reverse' method on all strings
var reverseString = function(string) { return string.split('').reverse().join(''); };
// Insert commas every three characters from the right
var insertCommas = function(string) {
// Reverse, because it's easier to do things from the left
var reversed = reverseString(string);
// Add commas every three characters
var reversedWithCommas = reversed.match(/.{1,3}/g).join(',');
// Reverse again (back to normal)
return reverseString(reversedWithCommas);
};
// If there was no decimal, the last capture grabs the final digit, so
// we have to put it back together with the 'before' substring
return sign + (decimal ? insertCommas(before) + decimal + after : insertCommas(before + after));
}
);
};
আপনি এটি এর মতো একটি jQuery প্লাগইনে ব্যবহার করতে পারেন:
$.fn.addCommas = function() {
$(this).each(function(){
$(this).text(addCommas($(this).text()));
});
};