# 🇮🇷 کتابخانهٔ ابزارهای فارسی برای Basic4Android
۲۵ تابع آمادهٔ فارسی در **یک فایل** — از تبدیل ارقام و قیمت تومانی تا اعتبارسنجی کد ملی،
شمارهٔ موبایل، کارت بانکی، شبا و کد پستی.
---
## 🤔 چرا این کتابخانه؟
اگر با B4A کار کرده باشید، این کدها را دوباره و دوباره نوشتهاید: تبدیل ارقام فارسی،
جداکنندهٔ هزارگان، اعتبارسنجی کد ملی، تشخیص اپراتور… هر بار هم باید تستشان کنید.
این کتابخانه همهشان را **یکجا، تمیز و تستشده** میدهد. کافی است یک فایل `.bas` را
به پروژه اضافه کنید و `FaTools.نامتابع(...)` صدا بزنید.
---
## ✅ چرا به این کد اعتماد کنیم؟
**۷۰ تست خودکار، همه سبز** — و نه تستهای ساده، تستهای واقعی:
| تست | نتیجه |
|---|---|
| تبدیل ارقام و قیمت تومانی | ✅ |
| عدد به حروف («یک میلیون و دویست و پنجاه هزار») | ✅ |
| **کد ملی: تغییر هر یک از ۱۰ رقم → نامعتبر میشود** | ✅ |
| شمارهٔ موبایل (۰۹، +۹۸، ۹۸، ۹) و تشخیص اپراتور | ✅ |
| **کارت بانکی: تغییر یک رقم → نامعتبر میشود** | ✅ |
| شبا با الگوریتم mod-۹۷ | ✅ |
| نیمفاصله («می روم» → «میروم») | ✅ |
> تست حساسیت یعنی چه؟ یعنی صرفاً «۱۲۳۴» را قبول نمیکند؛ بلکه با تغییر **یک رقم** از یک
> کد ملی صحیح، نتیجه نامعتبر میشود. این چیزی است که کدهای تکراری بازار از آن در میروند.
---
## 📦 چه چیزی دریافت میکنید؟
### نسخه اصلی — B4A
- `Modules/FaTools.bas` — ۲۵ تابع، با کامنت فارسی
- بدون هیچ وابستگی به کتابخانهٔ بیرونی (فقط امکانات پایهٔ B4A)
### 🎁 هدیه: نسخهٔ پایتون
- `Bonus/python/fatools.py` — آینهٔ کامل کتابخانه به زبان پایتون
- `Bonus/python/test_fatools.py` — همان ۷۰ تست، قابل اجرا
---
## 🔧 فهرست توابع (۲۵ تابع)
### ارقام و قالببندی
`ToPersianDigits` · `FaDigits` · `ToEnDigits` · `FaPrice` · `FormatNumber` · `FormatDecimal` · `FormatPercent`
### متن فارسی
`NumberToWords` · `Beautify` (نیمفاصله) · `NormalizeArabic` · `Truncate` · `WordCount` · `ReadingTime`
### اعتبارسنجی
`IsValidNationalCode` · `IsValidMobile` · `MobileOperator` · `IsValidSheba` ·
`IsValidCardNumber` · `IsValidPostalCode` · `IsValidEmail`
### کاربردی
`ProductPriceLabel` · `DiscountPercent` · `FaNum` · `CleanText` · `ToPersianDigits`
---
## 💻 نمونه کد
```
Log(FaTools.FaPrice(1250000)) ' ۱,۲۵۰,۰۰۰ تومان
Log(FaTools.NumberToWords(1250000)) ' یک میلیون و دویست و پنجاه هزار
Log(FaTools.MobileOperator("09121234567")) ' همراه اول
Log(FaTools.Beautify("می روم به کتاب ها")) ' میروم به کتابها
If FaTools.IsValidNationalCode(edtCode.Text) = False Then
ToastMessageShow("کد ملی معتبر نیست", True)
End If
```
**نمونهٔ واقعی — نمایش قیمت محصول در فروشگاه:**
```
Private Sub ShowProductPrice(price As Long, sale As Long)
If sale > 0 And sale < price Then
lblPrice.Text = FaTools.FaPrice(sale)
lblOldPrice.Text = FaTools.FormatNumber(price)
lblBadge.Text = FaTools.ToPersianDigits(FaTools.DiscountPercent(price, sale)) & "٪"
Else
lblPrice.Text = FaTools.FaPrice(price)
End If
End Sub
```
---
## 🎯 مناسب برای
- اپهای فروشگاهی و حسابداری (قیمت، تخفیف، فاکتور)
- فرمهای ثبتنام (کد ملی، موبایل، کد پستی)
- درگاههای پرداخت (اعتبارسنجی کارت و شبا)
- وبلاگ و اپهای محتوایی (شمارش واژه، زمان مطالعه، نیمفاصله درست)
---
## 🛠️ پیشنیازها
| مورد | نیاز |
|---|---|
| B4A | نسخه ۹ به بالا |
| کتابخانهها | Core (و Regex برای توابع متنی) |
| پایتون (هدیه) | ۳.۶ به بالا — بدون وابستگی |
| فایل لایوت | لازم نیست — همه چیز در کد |
---
## 📄 مجوز
استفاده در پروژههای شخصی و تجاری شما آزاد است، بدون محدودیت تعداد پروژه.
فروش مجدد یا انتشار بهعنوان محصول مستقل مجاز نیست.
---
💬 سؤالی دارید؟ از بخش پشتیبانی فروشگاه پیام بدهید.
| دستهبندی | کتابخانه و ابزار |
| تاریخ انتشار | ۲۲ شهریور ۱۴۰۵ - ۰۱:۵۳ |
| تعداد بازدید | ۲ |
| تعداد فروش | ۰ |
| فرمت تحویل | فایل دانلودی (بعد از پرداخت آنی فعال میشود) |
| پشتیبانی | تیکت پشتیبانی در پنل کاربری |
ویژگیهای کلیدی
- ۲۵ تابع آمادهٔ فارسی در یک فایل .bas
- اعتبارسنجی کد ملی با الگوریتم رسمی + تست حساسیت ۹۰ حالته
- اعتبارسنجی موبایل، کارت بانکی (Luhn)، شبا (mod-97)، کد پستی و ایمیل
- تشخیص اپراتور: همراه اول، ایرانسل، رایتل
- قیمت تومانی با ارقام فارسی و جداکنندهٔ هزارگان
- تبدیل عدد به حروف فارسی (تا ۱۸ رقم)
- اصلاح نیمفاصله: «می روم» ← «میروم» و «کتاب ها» ← «کتابها»
- یکسانسازی حروف عربی (ي←ی، ك←ک)
- شمارش واژه و محاسبهٔ زمان مطالعه
- ۷۰ تست خودکار — همه سبز
- هدیه: نسخهٔ کامل پایتون با همان تستها
- بدون وابستگی به کتابخانهٔ بیرونی — فقط امکانات پایهٔ B4A
- کد با کامنت فارسی و نامگذاری خوانا
- بدون فایل لایوت — افزودن یک ماژول و تمام
هنوز نظری ثبت نشده است. اولین نفر باشید!
برای ثبت نظر وارد شوید. (ثبت نظر پس از خرید فعال میشود)
' ═══ نمونهای از سورس (بخشی از ماژول FaTools) ═══
' قیمت با جداکنندهٔ هزارگان و ارقام فارسی
Public Sub FaPrice(price As Long) As String
Dim s As String = "" & price
Dim out As StringBuilder
out.Initialize
Dim cnt As Int = 0
For i = s.Length - 1 To 0 Step -1
If cnt > 0 And (cnt Mod 3) = 0 Then out.Insert(0, ",")
out.Insert(0, s.SubString2(i, i + 1))
cnt = cnt + 1
Next
Return FaDigits(out.ToString) & " تومان"
End Sub
' اعتبارسنجی کد ملی — الگوریتم رسمی
Public Sub IsValidNationalCode(code As String) As Boolean
Dim c As String = ToEnDigits(code).Trim
If c.Length <> 10 Then Return False
If Regex.IsMatch("^(\d)\1{9}$", c) Then Return False ' ۱۱۱۱۱۱۱۱۱۱
Dim sum As Int = 0
For i = 0 To 8
sum = sum + (Bit.ParseInt(c.SubString2(i, i + 1), 10) * (10 - i))
Next
Dim r As Int = sum Mod 11
Dim check As Int = Bit.ParseInt(c.SubString2(9, 10), 10)
If r < 2 Then Return (check = r)
Return (check = 11 - r)
End Sub
' ── استفاده ──
Log(FaTools.FaPrice(1250000)) ' ۱,۲۵۰,۰۰۰ تومان
⚠ نسخهٔ کامل ۲۵ تابع دارد با توضیحات فارسی خطبهخط و ۷۰ تست خودکار.