Documentation Index Fetch the complete documentation index at: https://persian-tools.usestrict.dev/llms.txt
Use this file to discover all available pages before exploring further.
Digit Conversion
The digit conversion utilities enable seamless conversion between Persian (۰-۹), Arabic (٠-٩), and English (0-9) numeral systems.
Available Functions
English to Persian digitsEnToFa()
Persian to English digitsFaToEn()
Arabic to Persian digitsArToFa()
Basic Usage
import {
digitsEnToFa ,
digitsFaToEn ,
digitsArToFa ,
digitsArToEn ,
digitsFaToAr ,
digitsEnToAr
} from '@persian-tools/persian-tools' ;
English ↔ Persian Conversion
English to Persian
digitsEnToFa ( "1234567890" );
// Output: '۱۲۳۴۵۶۷۸۹۰'
digitsEnToFa ( "Price: $1,250.99" );
// Output: 'Price: $۱,۲۵۰.۹۹'
digitsEnToFa ( "Call us at 123-456-7890" );
// Output: 'Call us at ۱۲۳-۴۵۶-۷۸۹۰'
Persian to English
digitsFaToEn ( "۱۲۳۴۵۶۷۸۹۰" );
// Output: '1234567890'
digitsFaToEn ( "قیمت: ۱,۲۵۰,۰۰۰ تومان" );
// Output: 'قیمت: 1,250,000 تومان'
digitsFaToEn ( "تماس: ۰۹۱۲-۳۴۵-۶۷۸۹" );
// Output: 'تماس: 0912-345-6789'
Arabic ↔ Persian Conversion
Arabic to Persian
digitsArToFa ( "٠١٢٣٤٥٦٧٨٩" );
// Output: '۰۱۲۳۴۵۶۷۸۹'
digitsArToFa ( "السعر: ٥٠٠ دينار" );
// Output: 'السعر: ۵۰۰ دينار'
Persian to Arabic
digitsFaToAr ( "۰۱۲۳۴۵۶۷۸۹" );
// Output: '٠١٢٣٤٥٦٧٨٩'
Arabic ↔ English Conversion
Arabic to English
digitsArToEn ( "٠١٢٣٤٥٦٧٨٩" );
// Output: '0123456789'
English to Arabic
digitsEnToAr ( "0123456789" );
// Output: '٠١٢٣٤٥٦٧٨٩'
Digit Mapping Reference
Persian Digits
Arabic Digits
English Persian 0 ۰ 1 ۱ 2 ۲ 3 ۳ 4 ۴ 5 ۵ 6 ۶ 7 ۷ 8 ۸ 9 ۹
English Arabic 0 ٠ 1 ١ 2 ٢ 3 ٣ 4 ٤ 5 ٥ 6 ٦ 7 ٧ 8 ٨ 9 ٩
Complex Examples
Mixed Content Processing
const mixedText = "تاریخ: 2024/03/15 - قیمت: $1,250" ;
// Convert all digits to Persian
const persianized = digitsEnToFa ( mixedText );
console . log ( persianized );
// Output: 'تاریخ: ۲۰۲۴/۰۳/۱۵ - قیمت: $۱,۲۵۰'
function formatPhoneNumber ( phone : string , locale : "fa" | "en" = "fa" ) {
// Normalize to English first
const normalized = digitsFaToEn ( digitsArToEn ( phone ));
// Format based on locale preference
return locale === "fa" ? digitsEnToFa ( normalized ) : normalized ;
}
formatPhoneNumber ( "۰۹۱۲۳۴۵۶۷۸۹" ); // '۰۹۱۲۳۴۵۶۷۸۹'
formatPhoneNumber ( "۰۹۱۲۳۴۵۶۷۸۹" , "en" ); // '09123456789'
Date Localization
function localizeDate ( dateString : string , locale : "fa" | "en" ) {
const converter = locale === "fa" ? digitsEnToFa : digitsFaToEn ;
return converter ( dateString );
}
localizeDate ( "2024-03-15" , "fa" ); // '۲۰۲۴-۰۳-۱۵'
localizeDate ( "۱۴۰۳-۱۲-۲۵" , "en" ); // '1403-12-25'
Advanced Use Cases
class NumberInputHandler {
private normalizeInput ( value : string ) : string {
// Convert all digit types to English for processing
return digitsFaToEn ( digitsArToEn ( value ));
}
private formatOutput ( value : string , locale : "fa" | "en" | "ar" ) : string {
switch ( locale ) {
case "fa" :
return digitsEnToFa ( value );
case "ar" :
return digitsEnToAr ( value );
default :
return value ;
}
}
processInput ( input : string , outputLocale : "fa" | "en" | "ar" = "fa" ) {
const normalized = this . normalizeInput ( input );
return this . formatOutput ( normalized , outputLocale );
}
}
const handler = new NumberInputHandler ();
handler . processInput ( "۱۲۳٤٥" , "en" ); // '12345'
Database Storage Strategy
interface LocalizedNumber {
raw : string ;
normalized : string ;
persian : string ;
arabic : string ;
}
function createLocalizedNumber ( input : string ) : LocalizedNumber {
// Always store normalized (English) version
const normalized = digitsFaToEn ( digitsArToEn ( input ));
return {
raw: input ,
normalized ,
persian: digitsEnToFa ( normalized ),
arabic: digitsEnToAr ( normalized ),
};
}
🚀 Performance Characteristics
Individual import : ~1KB minified
All digit utilities : ~3KB minified
Tree-shakable : Import only what you need
Edge Cases
digitsEnToFa ( "" ); // ''
digitsEnToFa ( null ); // '' (graceful handling)
digitsEnToFa ( undefined ); // ''
Mixed Scripts
// Handles mixed content gracefully
digitsEnToFa ( "English 123 عربی ٤٥٦ فارسی ۷۸۹" );
// Output: 'English ۱۲۳ عربی ٤٥٦ فارسی ۷۸۹'
// Preserves all non-digit characters
digitsEnToFa ( "(123) 456-7890" );
// Output: '(۱۲۳) ۴۵۶-۷۸۹۰'
digitsEnToFa ( "Amount: $1,234.56" );
// Output: 'Amount: $۱,۲۳۴.۵۶'
TypeScript Support
import { digitsEnToFa } from "persian-tools" ;
// All functions have string input/output type safety
const result : string = digitsEnToFa ( "123" );
// Type-safe function composition
const pipeline = ( text : string ) : string => digitsEnToFa ( digitsFaToEn ( digitsArToEn ( text )));
Common Patterns
Bidirectional Conversion
function createDigitConverter ( targetLocale : "fa" | "en" | "ar" ) {
const converters = {
fa: digitsEnToFa ,
en : ( text : string ) => digitsFaToEn ( digitsArToEn ( text )),
ar: digitsEnToAr ,
};
return converters [ targetLocale ];
}
const toFarsi = createDigitConverter ( "fa" );
toFarsi ( "123" ); // '۱۲۳'
Multi-step Normalization
function normalizeAllDigits ( text : string ) : string {
// Convert everything to English first, then to target
return digitsEnToFa ( digitsFaToEn ( digitsArToEn ( text )));
}
Number to Words Convert numbers to Persian words
Add Commas Format numbers with separators
Persian Chars Convert Arabic/English chars to Persian
Is Persian Validate Persian text content