ترفندهای یونیکد برای زبانهای راست به چپ
نویسنده: وحید نصیری
تاریخ: ۱۳۹۳/۱۰/۱۶ ۱۴:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
U+202A: LEFT-TO-RIGHT EMBEDDING (LRE) U+202B: RIGHT-TO-LEFT EMBEDDING (RLE) U+202D: LEFT-TO-RIGHT OVERRIDE (LRO) U+202E: RIGHT-TO-LEFT OVERRIDE (RLO) U+202C: POP DIRECTIONAL FORMATTING (PDF)
‫
public const char RightToLeftEmbedding = (char)0x202B;
Right-to-left Unicode blocks for modern scripts are: Consecutive range of the main letters: U+0590 to U+05FF - Hebrew U+0600 to U+06FF - Arabic U+0700 to U+074F - Syriac U+0750 to U+077F - Arabic Supplement U+0780 to U+07BF - Thaana U+07C0 to U+07FF - N'Ko U+0800 to U+083F - Samaritan Arabic Extended: U+08A0 to U+08FF - Arabic Extended-A Consecutive presentation forms: U+FB1D to U+FB4F - Hebrew presentation forms U+FB50 to U+FDFF - Arabic presentation forms A More Arabic presentation forms: U+FE70 to U+FEFF - Arabic presentation forms B
private static readonly Regex _matchArabicHebrew =
new Regex(@"[\u0600-\u06FF,\u0590-\u05FF]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
public static bool ContainsRtlFarsi(this string txt)
{
return !string.IsNullOrEmpty(txt) && _matchArabicHebrew.IsMatch(txt);
}
من میخوام مثل فایل ورد باشه و همه چیز سرجاش. اما وقتی همون فایل ورد کپی میگیرم داخل Notpad به هم میزه. از روش شما استفاده کردم. تونستم جملهی فارسی+انگلیسی بنویسم. البته من میخوام اول بنویسم dvd/214/CharFarsi/121/452/12. اما همیشه اون بخش CharFarsi میره به آخر. ممنون میشم بهم یاد بدید که چطوری از کاربر بگیرم که به هم نریزه و حتی وقتی سرچ میکنم رشته رو بدون مشکل پیداش کنم.
const char RightToLeftEmbedding = (char)0x202B;
const char PopDirectionalFormatting = (char)0x202C;
static string FixWeakCharacters(string data)
{
if (string.IsNullOrWhiteSpace(data)) return string.Empty;
var weakCharacters = new[] { @"\", "/", "+", "-", "=", ";", "$" };
foreach (var weakCharacter in weakCharacters)
{
data = data.Replace(weakCharacter, RightToLeftEmbedding + weakCharacter + PopDirectionalFormatting);
}
return data;
} # Code files
[*.{cs,csx,vb,vbx,razor,html,htm,js,md,cshtml,xaml,vbhtml,aspx,txt,asax,ashx,asmx,master,config}]
charset = utf-8-bom
یک نکتهی تکمیلی: اگر میخواهید کاربران موبایل به سادگی بتوانند اعداد صحیح را وارد کنند، از یک ورودی با ویژگیهای type=tel و inputmode=numeric استفاده کنید:
<input type="tel" inputmode="numeric">
مزیت اینکار، نمایش خودکار صفحه کلید تمام عددی تنظیم شدهی بر روی حالت انگلیسی است؛ به این ترتیب مشکل «... در دستگاههای موبایل، زمانیکه صفحه کلید در حالت فارسی قرار دارد، اعداد را هم فارسی وارد میکند ...» اصلا رخ نمیدهد.