عبارات فارسی

بعد از افزودن عمومی‌-فارسی به پروژه‌ی خود به تمام توابع عمومی فارسی دسترسی دارید. در این‌جا فقط توابع نسخه‌ی دو توضیح داده‌می‌شود، اما فراموش نکنید که نسخه‌ی یک تعداد زیادی توابعِ سطح پایین دارد که برای کارهای تخصصی زبان‌شناسی و پردازش زبانی با سرعتِ بالا مناسب هستند.

ساده‌ترین راهِ استفاده از نسخه‌ی دو، استفاده از Interfaceه برنامه به‌نام FarsiOps است:

FarsiOps myOps = new FarsiOpsImpl();

از این‌به‌بعد به آبجکتِ myOps دسترسی دارید، در نسخه‌ی ۲.۰ این رابط متدهای زیر را ارایه می‌کند:

public String fixArabicString(String inputStringWithPossibleArabicChars);

public String fixArabicDigits(String inputStringWithPossibleArabicDigits);

public String fixLatinDigits(String inputStringWithPossibleLatinDigits);

public String DigitsToFarsi(String inputStringWithPossibleLatinOrArabicDigits);

public String declineString(String inputStringWithPossibleDeclensions);

public String fullyDecline(String inputStringwithAllDeclensions);

//All of the above are summarized in farSize

public String farSize(String inputString);

//Checks

public boolean hasAnyLatin(String inputString);

public boolean hasOnlyLatin(String inputString);

public boolean hasAnyLatinDigits(String inputString);

public boolean hasAnyArabic(String inputString);

public boolean hasOnlyArabic(String inputString);

public boolean hasAnyArabicDigits(String inputString);

public boolean hasAnyFarsi(String inputString);

public boolean hasOnlyFarsi(String inputString);

public boolean hasAnyFarsiDigits(String inputString);

فکر نمی‌کنم نیازی به توضیحِ زیادی درباره‌ی متد‌ها باشد. همانطور که می‌بینید متد‌ها به سه‌دسته تقسیم شده‌اند، دسته‌ی اول و دوم روی متن ورودی تغییراتی اعمال می‌کنند و دسته‌ی سوم یک‌سری کنترل هستند.

متد fixArabicString متن ورودی را بررسی کرده و اگر حروف «ی» یا «ک» عربی در آن‌ها بیابد، آن‌ها را به‌ترتیب به «ی» یا «ک» تبدیل می‌کند. برای مثال عربی تبدیل می‌شود به عربی.

متد fixArabicDigits اعداد عربی ورودی را به اعداد فارسی تبدیل می‌کند، برای مثال «سالِ ۴٠۵۶» تبدیل می‌شود به «سالِ ۴۰۵۶».

متد fixLatinDigits در متن ورودی اعداد لاتین را به فارسی تبدیل می‌کند، برای مثال «Year 2012» می‌شود «Year ۲۰۱۲»

متد  digitsToFarsi هر دو متدِ قبلی را اجرا می‌کند و همه‌ی اعدادِ متن ورودی را تبدیل می‌کند به اعداد فارسی.

متد declineString اِعراب را از روی متن برمی‌دارد، یعنی «اَسبِ بُز» تبدیل می‌شود به «اسب بز».

متد fullyDecline علاوه بر متد قبلی، کسره‌ی تنوین و ضمه‌ی تنوین و سکون و الفِ  کوچک را از متن ورودی حذف می‌کند. توجه کنید که تشدید و تنوین فتحه حذف نمی‌شوند. یعنی حتماً همان حتماً باقی می‌ماند.

متد farSize هم که همه‌ی متدهای بالا (به جز fullyDecline) را پیاده می‌کند و متنِ خروجی قابل استفاده به عنوان ورودی کاربر یا آماده برای ذخیره به عنوان متنِ صحیح فارسی است.

متد hasAnyFarsi چک می‌کند که آیا ورودی هیچ حرفِ فارسی دارد یا خیر؟! متدهای hasAnyArabic و hasAnyLatin هم همین‌کار را برای کاراکترست‌های خودشان می‌کنند.

متد hasOnlyFarsi چک می‌کند که آیا همه‌ی متنِ ورودی فقط فارسی است یا خیر؟ به‌همچنین متدهای hasOnlyArabic و hasOnlyLatin برای کاراکترست‌های خودشان.

و در آخر هم متد hasAnyFarsiDigits همانطور که از اسمش پیداست چک می‌کند که آیا هیچ عددِ فارسی در ورودی هست یا نه؟ دوباره دو متد مشابه هم برای عربی و لاتین داریم.

تمام تست‌های این نگارش در کلاس org.kaveh.commons.farsi.v2.FarsiOpsTest هستند، الآن ۶۵ تست در این کلاس وجود دارد که خیلی از corner caseها را تست می‌کنند. در ضمن از تست‌ها می‌توانید برای دیدن نمونه‌های استفاده از توابع هم استفاده کنید.

پیاده‌سازی در کلاس FarsiOpsImpl است و تمام Constantها هم در کلاس CharDefenitions جاخوش کرده‌اند!

لذت ببرید!