সংখ্যা এবং স্ট্রিং বিন্যাসকরণের জন্য জাভাস্ক্রিপ্টে কোনও ফাংশন আছে?
আমি স্ট্রিং বা সংখ্যার জন্য হাজার বিভাজকের জন্য একটি উপায় খুঁজছি ... (স্ট্রিংয়ের মতো। ফরম্যাট সি # তে)
সংখ্যা এবং স্ট্রিং বিন্যাসকরণের জন্য জাভাস্ক্রিপ্টে কোনও ফাংশন আছে?
আমি স্ট্রিং বা সংখ্যার জন্য হাজার বিভাজকের জন্য একটি উপায় খুঁজছি ... (স্ট্রিংয়ের মতো। ফরম্যাট সি # তে)
How to print a number with commas as thousands separators in JavaScript
: স্ট্যাকওভারফ্লো.com
উত্তর:
আপডেট (7 বছর পরে)
নীচের মূল উত্তরে উদ্ধৃত রেফারেন্সটি ভুল ছিল। এটির জন্য একটি বিল্ট ইন ফাংশন রয়েছে, যা কায়সার নীচে পরামর্শ দেয়:toLocaleString
সুতরাং আপনি এটি করতে পারেন:
(1234567.89).toLocaleString('en') // for numeric input
parseFloat("1234567.89").toLocaleString('en') // for string input
নীচে বাস্তবায়িত ফাংশনটিও কাজ করে, তবে কেবল এটি প্রয়োজনীয় নয়।
(আমি ভেবেছিলাম সম্ভবত আমি ভাগ্যবান হব এবং এটি 2010 সালে ফিরে আসার দরকার ছিল তবে খুঁজে পাব না। এই আরও নির্ভরযোগ্য উল্লেখ অনুসারে , টোকলস্ট্রিং ECMAScript তৃতীয় সংস্করণ [১৯৯৯] এর পরে থেকে স্ট্যান্ডার্ডের অংশ হয়ে গেছে, আমি বিশ্বাস করি এটি এর অর্থ IE 5.5 হিসাবে অনেকটা পিছনে সমর্থন করা হত))
আসল উত্তর
এই রেফারেন্স অনুসারে কোনও সংখ্যায় কমা যুক্ত করার জন্য কোনও বিল্ট ইন ফাংশন নেই। তবে সেই পৃষ্ঠাটিতে কীভাবে এটি কোডিং করা যায় তার একটি উদাহরণ রয়েছে:
function addCommas(nStr) {
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
সম্পাদনা করুন: অন্য পথে যেতে (কমা দিয়ে স্ট্রিংকে সংখ্যায় রূপান্তর করুন), আপনি এর মতো কিছু করতে পারেন:
parseFloat("1,234,567.89".replace(/,/g,''))
(1234567).toLocaleString().replace(/,/g," ",)
হাজারের মধ্যে
যদি হাজার হাজার বিভাজক, ডিলিমিটার এবং দশমিক বিভাজককে স্থানীয়করণের বিষয়ে হয় তবে নিম্নলিখিতগুলি সহ যান:
// --> numObj.toLocaleString( [locales [, options] ] )
parseInt( number ).toLocaleString();
আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি বিকল্প রয়েছে (এবং ফ্যালব্যাক সহ স্থানীয়ও রয়েছে):
number = 123456.7089;
result = parseInt( number ).toLocaleString() + "<br>";
result += number.toLocaleString( 'de-DE' ) + "<br>";
result += number.toLocaleString( 'ar-EG' ) + "<br>";
result += number.toLocaleString( 'ja-JP', {
style : 'currency',
currency : 'JPY',
currencyDisplay : 'symbol',
useGrouping : true
} ) + "<br>";
result += number.toLocaleString( [ 'jav', 'en' ], {
localeMatcher : 'lookup',
style : 'decimal',
minimumIntegerDigits : 2,
minimumFractionDigits : 2,
maximumFractionDigits : 3,
minimumSignificantDigits : 2,
maximumSignificantDigits : 3
} ) + "<br>";
var el = document.getElementById( 'result' );
el.innerHTML = result;
<div id="result"></div>
MDN তথ্য পৃষ্ঠায় বিশদ ।
সম্পাদনা: Commentor সেরেনার মত @I নিম্নলিখিত যোগ করেছেন:
একটি অ-ইংরেজি লোকেল যেখানে আমরা এখনও ইংরেজি বিন্যাস, ব্যবহার চান ব্রাউজার সমর্থন করার জন্য
value.toLocaleString('en')
। ভাসমান পয়েন্টের জন্যও কাজ করে।
Number(yourNumberOrString).toLocaleString()
value.toLocaleString('en')
। ভাসমান পয়েন্টের জন্যও কাজ করে।
7,77,77,777
, ব্যবহার করুনvalue.toLocaleString('en-IN')
ECMAScript2018 পরিবর্তনের সাথে সামঞ্জস্য রেখে লুক-ব্যাক সমর্থন ব্যবহার করে আপডেট হয়েছে।
পিছনের সামঞ্জস্যের জন্য, আসল সমাধানটি দেখতে আরও নীচে স্ক্রোল করুন।
একটি নিয়মিত অভিব্যক্তি ব্যবহার করা যেতে পারে - স্ট্রিং হিসাবে সঞ্চিত বৃহত সংখ্যার সাথে কাজ করার ক্ষেত্রে উল্লেখযোগ্য useful
const format = num =>
String(num).replace(/(?<!\..*)(\d)(?=(?:\d{3})+(?:\.|$))/g, '$1,')
;[
format(100), // "100"
format(1000), // "1,000"
format(1e10), // "10,000,000,000"
format(1000.001001), // "1,000.001001"
format('100000000000000.001001001001') // "100,000,000,000,000.001001001001
]
.forEach(n => console.log(n))
»ভারবোজ রেজেক্স ব্যাখ্যা (regex101.com)
এই মূল উত্তরটির প্রয়োজন হতে পারে না তবে পিছনের সামঞ্জস্যের জন্য ব্যবহার করা যেতে পারে।
একক নিয়মিত অভিব্যক্তি দিয়ে (কলব্যাক ছাড়াই) এটি হ্যান্ডেল করার চেষ্টা করা আমার বর্তমান সামর্থ্য জাভাস্ক্রিপ্টে নেতিবাচক দৃষ্টিভঙ্গির অভাবের জন্য আমাকে ব্যর্থ করে দেয় ... সবচেয়ে সাধারণ ক্ষেত্রে কাজ করে এমন আরও একটি সংক্ষিপ্ত বিকল্প এখানে কখনও কম নয় - যে কোনও দশমিক পয়েন্টের জন্য অ্যাকাউন্টিং ম্যাচগুলিকে উপেক্ষা করে যেখানে পিরিয়ডের সূচকের পরে ম্যাচের সূচক উপস্থিত হয়।
const format = num => {
const n = String(num),
p = n.indexOf('.')
return n.replace(
/\d(?=(?:\d{3})+(?:\.|$))/g,
(m, i) => p < 0 || i < p ? `${m},` : m
)
}
;[
format(100), // "100"
format(1000), // "1,000"
format(1e10), // "10,000,000,000"
format(1000.001001), // "1,000.001001"
format('100000000000000.001001001001') // "100,000,000,000,000.001001001001
]
.forEach(n => console.log(n))
একটি দুর্দান্ত jQuery নম্বর প্লাগইন রয়েছে: https://github.com/teamdf/jquery-number
এটি আপনাকে দশমিক এবং হাজারের জন্য দশমিক সংখ্যা এবং বিভাজক অক্ষরের বিকল্পগুলির সাথে আপনার পছন্দ মতো ফর্ম্যাটটিতে যে কোনও নম্বর পরিবর্তন করতে দেয়:
$.number(12345.4556, 2); // -> 12,345.46
$.number(12345.4556, 3, ',', ' ') // -> 12 345,456
আপনি এটি সরাসরি ইনপুট ক্ষেত্রে ব্যবহার করতে পারেন, যা সর্বোত্তম, উপরের মতো একই বিকল্পগুলি ব্যবহার করে:
$("input").number(true, 2);
অথবা আপনি নির্বাচক ব্যবহার করে পুরো ডিওএম উপাদানগুলিতে প্রয়োগ করতে পারেন:
$('span.number').number(true, 2);
আমি এটি ব্যবহার:
function numberWithCommas(number) {
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
উত্স: লিঙ্ক
'123452343267.0505'.replace(/\B(?=(\d{3})+(?!\d))/g, ","); "123,452,343,267.0,505"
- দশমিক পয়েন্ট পরে শেষ কমা লক্ষ্য করুন।
// thousand separates a digit-only string using commas
// by element: onkeyup = "ThousandSeparate(this)"
// by ID: onkeyup = "ThousandSeparate('txt1','lbl1')"
function ThousandSeparate()
{
if (arguments.length == 1)
{
var V = arguments[0].value;
V = V.replace(/,/g,'');
var R = new RegExp('(-?[0-9]+)([0-9]{3})');
while(R.test(V))
{
V = V.replace(R, '$1,$2');
}
arguments[0].value = V;
}
else if ( arguments.length == 2)
{
var V = document.getElementById(arguments[0]).value;
var R = new RegExp('(-?[0-9]+)([0-9]{3})');
while(R.test(V))
{
V = V.replace(R, '$1,$2');
}
document.getElementById(arguments[1]).innerHTML = V;
}
else return false;
}
var number = 35002343;
console.log(number.toLocaleString());
রেফারেন্সের জন্য আপনি এখানে চেক করতে পারেন https://developer.mozilla.org/en-US/docs/Web/ জাভা স্ক্রিপ্ট / রেফারেন্স / গ্লোবাল_অবজেক্টস / নাম্বার / টো লোকাল স্ট্রিং
আপনি জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন। নীচে accept
কোডগুলি দেওয়া হয়েছে , এটি কেবল সংখ্যাসূচক এবং একটি হবেdot
এখানে জাভাস্ক্রিপ্ট
<script >
function FormatCurrency(ctrl) {
//Check if arrow keys are pressed - we want to allow navigation around textbox using arrow keys
if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
return;
}
var val = ctrl.value;
val = val.replace(/,/g, "")
ctrl.value = "";
val += '';
x = val.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
ctrl.value = x1 + x2;
}
function CheckNumeric() {
return event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 46;
}
</script>
এইচটিএমএল
<input type="text" onkeypress="return CheckNumeric()" onkeyup="FormatCurrency(this)" />
number = 123456.7089;
result = parseInt( number ).toLocaleString() + "<br>";
result = number.toLocaleString( 'pt-BR' ) + "<br>";
var el = document.getElementById( 'result' );
el.innerHTML = result;
<div id="result"></div>
আপনাকে যা করতে হবে প্রয়োজন শুধু সত্যিই হয় এই :
123000.9123.toLocaleString()
//result will be "123,000.912"
toLocaleString()
যা কমা যোগ করে না, বা স্ট্যান্ডার্ডে অন্যান্য বৈশিষ্ট্যগুলির অভাব রয়েছে। toLocaleString
উপস্থিতি যাচাই করা সহজ তবে এর সম্মতি পরীক্ষা করার জন্য নয়।
প্রতিক্রিয়া জন্য সমাধান সংমিশ্রণ
let converter = Intl.NumberFormat();
let salary = monthlySalary.replace(/,/g,'')
console.log(converter.format(salary))
this.setState({
monthlySalary: converter.format(salary)
})
}
handleOnChangeMonthlySalary(1000)```
আপনি এনজিএক্স-ফর্ম্যাট-ফিল্ড ব্যবহার করতে পারেন। ইনপুট মানটি ফর্ম্যাট করার জন্য এটি একটি নির্দেশ যা ভিউতে প্রদর্শিত হবে। এটি ইনপুট মানটি হেরফের করবে না যা ব্যাকএন্ডে সংরক্ষণ করা হবে। এখানে লিঙ্ক দেখুন !
উদাহরণ:
component.html:
<input type="text" formControlName="currency" [appFormatFields]="CURRENCY"
(change)="onChangeCurrency()">
component.ts
onChangeCurrency() {
this.currency.patchValue(this.currency.value);
}
ডেমো দেখতে: এখানে !
আপনি নিম্নলিখিত ফাংশন ব্যবহার করতে পারেন:
function format(number, decimals = 2, decimalSeparator = '.', thousandsSeparator = ',') {
const roundedNumber = number.toFixed(decimals);
let integerPart = '',
fractionalPart = '';
if (decimals == 0) {
integerPart = roundedNumber;
decimalSeparator = '';
} else {
let numberParts = roundedNumber.split('.');
integerPart = numberParts[0];
fractionalPart = numberParts[1];
}
integerPart = integerPart.replace(/(\d)(?=(\d{3})+(?!\d))/g, `$1${thousandsSeparator}`);
return `${integerPart}${decimalSeparator}${fractionalPart}`;
}
// Use Example
let min = 1556454.0001;
let max = 15556982.9999;
console.time('number format');
for (let i = 0; i < 15; i++) {
let randomNumber = Math.random() * (max - min) + min;
let formated = format(randomNumber, 4, ',', '.'); // formated number
console.log('number: ', randomNumber, '; formated: ', formated);
}
console.timeEnd('number format');
আমি এখানে কোনও উত্তর পছন্দ করি নি, তাই আমি একটি ফাংশন তৈরি করেছি যা আমার পক্ষে কাজ করে। অন্য কারও পক্ষে এটি দরকারী মনে হলে কেবল ভাগ করতে চাই।
function getFormattedCurrency(num) {
num = num.toFixed(2)
var cents = (num - Math.floor(num)).toFixed(2);
return Math.floor(num).toLocaleString() + '.' + cents.split('.')[1];
}