Введение

Попрощайтесь с ограничениями стандартного JavaScript toLocaleString, когда дело доходит до представления валюты в индийских рупиях (INR)! Представляем революционный полифилл convertToIndianNumberSystem, ваш шлюз для простого форматирования числовых значений в очаровательной индийской системе цифр. Воспользуйтесь удобством группировки таких единиц, как тысячи, лакхи и кроры, чтобы создать привлекательный дисплей валюты.

Понимание функции

Предоставленная функция JavaScript, convertToIndianNumberSystem, принимает числовое значение в качестве входных данных и возвращает соответствующее строковое представление в индийской системе цифр. Давайте пройдемся по коду, чтобы понять принцип его работы.

const convertToIndianNumberSystem = (num = 0) => {
  // Step 1: Convert the number to a string and extract the decimal part (if present)
  const inputStr = num.toString();
  const [numStr, decimal] = inputStr.split(".");

  // Step 2: Handle the decimal part, keeping only two decimal places
  const formattedDecimal = decimal ? `.${decimal.substring(0, 2)}` : "";

  // Step 3: Define regular expressions for matching number patterns in the Indian digit system
  const croreRegex = /^(\d+)(\d{2})(\d{2})(\d{3})$/;
  const lakhRegex = /^(\d{1,2})(\d{2})(\d{3})$/;
  const thousandRegex = /^(\d{1,2})(\d{3})$/;

  let match;

  // Step 4: Try matching the number with the crore pattern first
  if (croreRegex.test(numStr)) {
    match = numStr.match(croreRegex);
    match.shift(); // Remove the first element (entire matched string)
    return `${match.join(",")}${formattedDecimal} Crores`;
  }

  // Step 5: If not matched with the crore pattern, try matching with the lakh pattern
  if (lakhRegex.test(numStr)) {
    match = numStr.match(lakhRegex);
    match.shift(); // Remove the first element (entire matched string)
    return `${match.join(",")}${formattedDecimal} Lakhs`;
  }

  // Step 6: If not matched with the lakh pattern, try matching with the thousand pattern
  if (thousandRegex.test(numStr)) {
    match = numStr.match(thousandRegex);
    match.shift(); // Remove the first element (entire matched string)
    return `${match.join(",")}${formattedDecimal} Thousands`;
  }

  // Step 7: If no pattern matches, return the original number with decimal (if present)
  return `${numStr}${formattedDecimal}`;
};

Использование и примеры

console.log(convertToIndianNumberSystem(12345678)); // Output: 1,23,45,678 Crores
console.log(convertToIndianNumberSystem(9876543));  // Output: 98,76,543 Lakhs
console.log(convertToIndianNumberSystem(12345.67)); // Output: 12,345.67 Thousands
console.log(convertToIndianNumberSystem(1000));     // Output: 1,000 Thousands
console.log(convertToIndianNumberSystem(123.456));  // Output: 123.45
console.log(convertToIndianNumberSystem());        // Output: 0

Заключение

В этой статье мы успешно написали функцию JavaScript для преобразования числовых значений в индийскую систему цифр. Функция точно преобразует числовые значения в их соответствующее представление в тысячах, лакхах и крорах. Вы можете легко интегрировать эту функцию в свои проекты JavaScript, чтобы эффективно обрабатывать числа в индийской системе счисления.