formatToIndian static method

String formatToIndian(
  1. dynamic number, {
  2. String? currency,
})

Implementation

static String formatToIndian(dynamic number, {String? currency}) {
  if (number is! BigInt && number is! int) {
    throw ArgumentError("Input must be an int or BigInt.");
  }

  String numberStr = number.toString();
  int n = numberStr.length;

  if (n <= 3) return numberStr;

  String lastThree = numberStr.substring(n - 3);
  String rest = numberStr.substring(0, n - 3);

  String formatted = rest.replaceAllMapped(
      RegExp(r".{1,2}(?=(.{2})+$)"), (Match m) => "${m.group(0)},");
  formatted += ",$lastThree";

  if (currency != null && currencySigns.containsKey(currency)) {
    formatted = "${currencySigns[currency]} $formatted";
  }

  return formatted;
}