Last updated:
0 purchases
persian tools
Persian tools
Persian Tools dart package which you can use in all platforms
Features #
Removing ordinal suffixes
Adding ordinal suffixes
Converting Persian words to number
Converting Persian numbers to word
Adding and removing separator to / from numbers
Converting Persian numbers to Arabic / English numbers and reverse
Checking a string has/is Persian
Validating Iranians national id
Finding city and province names by national id
Calculating bills
Checking IBAN of the bank account (SHEBA)
Validating ATM card number
Validating Iranians phone number
Finding banks name by ATM card number
Getting information from vehicle plate
Fixing and decoding URLs with whitespace
Usage #
now let's look at examples and how work with apis in package
Adding Ordinal Suffixes - source
var number = 'سی سه'; // or سی | شصت | پنجاه دو
addOrdinalSuffix(number); // سی سوم | سی اُم | شصتم | پنجاه دوم
/// or use it as String extension method
number.withOrdinalSuffix // ... like so
copied to clipboard
Removing Ordinal Suffixes - source
var number = 'چهل و سوم'; // سی سوم | سی اُم | شصتم | پنجاه دوم
removeOrdinalSuffix(number); // سی | شصت | پنجاه دو
/// or use it as String extension method
number.withoutOrdinalSuffix; // ... like so
copied to clipboard
Converting Persian words to number - source
final words = 'سه هزار دویست و دوازده';
/// use [wordsToNumber] method to convert [words] to int number
wordsToNumber(words); // 3212
/// use [wordsToNumberString] method to convert [words] to String
wordsToNumberString(words); // '3212' as String
/// [wordsToNumberString] also has two optional parameter
/// use [digit] optional parameter to convert the digits to specific local digits
/// use [addComma] to add comma between the every 3 digits
wordsToNumberString(
words,
digits: DigitLocale.fa,
addComma: true,
); // '۳,۲۱۲' as String
/// or you can easily use extension methods on String object
words.convertWordsToNumber(); // 3212
words.convertWordsToNumberString(); // '3212' as String
copied to clipboard
Converting Persian numbers to word - source
final stringDigit = '257,433';
final intDigit = -128;
/// use [numberToWordsString] method to convert [stringDigit] to persian
numberToWordsString(stringDigit); // 'دویست و پنجاه و هفت هزار و چهارصد و سی و سه'
/// [numberToWordsString] also has an optional parameter
/// by default [ordinal] is [false], [true] makes the output an ordinal word
numberToWordsString(stringDigit, ordinal: true); // 'دویست و پنجاه و هفت هزار و چهارصد و سی و سوم'
/// use [numberToWordsInt] method to convert [intDigit] to persian
numberToWords(intDigit); // 'منفی صد و بیست و هشت'
/// [numberToWordsInt] also has an optional parameter
/// by default [ordinal] is [false], [true] makes the output an ordinal word
numberToWords(intDigit, ordinal: true); // 'منفی صد و بیست و هشتم'
/// you can simply use extension methods on int or String objects
stringDigit.convertNumToWords(); // 'دویست و پنجاه و هفت هزار و چهارصد و سی و سه'
intDigit.convertNumToWords(); // 'منفی صد و بیست و هشت'
copied to clipboard
Adding and removing separator to / from numbers - source
addCommas('3333'); // 3,333
addCommas('۸۲۳۳۴۵'); // 823,345
removeCommas('654,562'); // 654562
removeCommas('3,365.255'); // 3365.255
'11222'.addComma // 11,222
'4,544.562'.removeComma // 4544.562
copied to clipboard
Converting Persian numbers to Arabic / English numbers and reverse - source
convertArToFa('السلام علیکم 14۱۲۳6٤٥'); // السلام علیکم 14۱۲۳6۴۵
convertArToEn('Persian Tools : 123٥٦٧'); // Persian Tools : 123567
convertEnToFa('سلام این هارو فارسی کن : 22۲۳۴'); // سلام این هارو فارسی کن : ۲۲۲۳۴
convertFaToEn('سلام این هارو اینگلیسی کن : 22۲۳۴'); // سلام این هارو اینگلیسی کن : 22234
copied to clipboard
Checking a string has/is Persian - source
isPersian('این یک متن فارسی است؟'); // true
isPersian('هل هذا نص فارسي؟'); // false
hasPersian('This text includes فارسی'); // true
hasPersian('Это персидский س текст?'); // true
hasPersian('أكد رئيس اللجنة العسكرية الممثلة لحكومة الوفاق أراضي البلاد.'); //true
copied to clipboard
Validate Iranian national ID - source
var nationalID = '0684159414';
verifyIranianNationalId(nationalID); // true
///the nationalID should contain 10 digit, so the following verifications
///should return false
nationalID = '00000';
verifyIranianNationalId(nationalID); // false
/// verify nationalId with extension methods over [String] class
nationalID = '';
nationalID.isIranianNationalId; // false
copied to clipboard
Find city and province name by national code - source
final place = getPlaceByIranNationalId('0084575948');
place?.city.name; // تهران مرکزی
place?.province.name; // تهران
/// get place with extension methods over [String] class
final nationalId = '2110990147';
nationalId.getPlaceNationalId?.city.name; // گرگان
nationalId.getPlaceNationalId?.province.name; // گلستان
copied to clipboard
Calculating Bill - source
var bill = Bill(billId: 9174639504124, paymentId: 12908197, currency: 'rial');
bill.barcode // 917463950412400012908197
bill.billType // برق
bill.amount // 129000
bill.isBillValid // false
bill.isPaymentIdValid // false
bill.isBillIdValid // true
// returns all the above getter as a Map with same as getters
bill();
copied to clipboard
Checking IBAN of the bank account (SHEBA) - source
var sheba = Sheba('IR820540102680020817909002');
var bank = sheba(); // Returns nullable object of BankInformation
bank?.nickname // nickname of bank
bank?.name // complete name of bank
bank?.persianName // complete persian name of bank
bank?.code // code of bank
// true means with sheba package can take account number, false means package can't
bank?.isAccountNumberAvailable
bank?.accountNumber // account number in simple numbers
bank?.formattedAccountNumber // account number with hyphen
bank?.process
sheba.isValid // true
copied to clipboard
Validating ATM card number - source
validateCardNumber('6219861034529007'); // true
validateCardNumber('6219861034529007'); // true
validateCardNumber('0000000000000000'); // false
validateCardNumber('621986103452900'); // false
copied to clipboard
Validating Iranians phone number - source
final phoneNumber = '09022002580';
// phone number validator
phoneNumberValidator(phoneNumber); // true
// phone number prefix
getPhonePrefix(phoneNumber); // 902
// phone number detail
final operatorDetail = getPhoneNumberDetail(phoneNumber);
operatorDetail?.name; // ایرانسل
operatorDetail?.provinces; // []
operatorDetail?.base; // کشوری
operatorDetail?.type; // SimCartType.both
/// you can also use this methods as String extension method
// phone number validator
phoneNumber.isPhoneNumber; // true
// phone number prefix
phoneNumber.phoneNumberPrefix; // 902
// phone number detail
phoneNumber.phoneNumberDetail?.name; // ایرانسل
copied to clipboard
Finding banks name by card number - source
final cardNumber = '6037701689095443';
final bankInfo = getBankNameFromCardNumber(cardNumber);
bankInfo?.name; // بانک کشاورزی
bankInfo?.initCode; // 603770
/// you can also use this methods as String extension method
// get bank info from String
cardNumber.bankNameFromCard?.name; // بانک کشاورزی
copied to clipboard
Getting information from vehicle plate - source
var motorcyclePlate = Plate(plate: '12345678');
motorcyclePlate.info.type // Motorcycle
motorcyclePlate.info.template // 123-45678
motorcyclePlate.info.province // مرکز تهران
motorcyclePlate.info.category // null because its type is Motorcycle
motorcyclePlate.isValid // true
// because of persian language you may see plate in wrong form
var carPlate = Plate(plate: '12ب14547');
carPlate.info.type // Car
carPlate.info.template // 12{B}145{Iran}47 , B=ب Iran=ایران
carPlate.info.province // مرکزی
carPlate.info.category // شخصی
carPlate.isValid // true
// you can also create [Plate] with below String extension method
var motorPlate = '12345678'.createVehiclePlate;
motorPlate.info.type // Motorcycle
motorPlate.info.template // 123-45678
motorPlate.info.province // مرکز تهران
motorPlate.info.category // null because its type is Motorcycle
motorPlate.isValid // true
copied to clipboard
Fixing and decoding URLs - source
var url = 'wss://hostname.domain/?q=i am a wrong query';
urlFix(url); // wss://hostname.domain/?q=i%20am%20a%20wrong%20query
copied to clipboard
Contributing #
Thank you for your interest in contributing! For more detail about contributing, please check out the CONTRIBUTING.md file.
Contributors ✨ #
Thanks goes to these wonderful people (emoji key):
Ehsan Aramide💻 📖 💡 🚧 👀 ⚠️
Payam Zahedi💻 📖 💡 🚧 👀 ⚠️
Mohammad Ali Khosravi💻 📖 💡 ⚠️ 👀
Ali Torki🤔 🚧 📆
This project follows the all-contributors specification. Contributions of any kind welcome!
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.