تشخیص کاراکتر فارسی از داخل یک رشته

desiran

Member
چه طوری میشه کاراکتر های فارسی رو از دیگه (انگلیسی) از داخل یک رشته String تشخیص داد . با ASP کلاسیک
 

m1pfard

Member
به نظر من باید تک تک کاراکترها رو مقایسه کنی. یعنی یه حلقه برای مقایسه تک تک کاراکترها با کدهای حروف فارسی.
 

desiran

Member
خوب آره ولی همون که یک کراکتر رو هم تشخیص داد هم مشکل دارم
 

mosyhey

Member
باید بشود چون من قبلاً این کار را کرده بودم. فرض کنید شما صفحه را یونیکد تعریف می کنید و همچنین ورودی های کاربران را. حالا هر حرف فارسی یک کد دارد که با مقایسه تک تک حروف وارد شده توسط کاربر با این کد ها می توانید بفهمید چه حرفی است و یا اینکه فارسی است یا نه؟
اول لیست کد حروف را از این صفحه ببینید:
http://unicode.coeurlumiere.com/
حالا مثلا اگر شرط زیر true شد می فهمیم کاربر حرف "ج" را وارد کرده است با این فرض که حرفی را که می خواهیم بسنجیم در متغیر harf ریخته ایم:
HTML:
If harf=chrw(1580) Then
البته اگر صفحه کدتان را هم به صورت یونیکد بسازید این گونه هم می توانید بنویسید که:
HTML:
If harf="ج" Then
من از روش اول استفاده کرده ام و کاملاً جواب گرفته ام.
 

desiran

Member
ممنون ولی راه ساده تری نیست برای اینکه بشه فهمید که یک کاراکتر (که خاص نباشه یعنی نمی دونیم چی هست ) فقط فارسی هست یا نه

یعنی دیگه از حلقه استفاده نکنم و یا اینکه کراکترهای فارسی از چه عددی تا چه عددی هستن.
 

mazoolagh

Active Member
بهترين راه استفاده از regular expressions هست.
در asp هم با vbs و هم با js‌ ميتونين استفاده كنين.
 

mazoolagh

Active Member
اين REGULAR EXPRESSION خيلي در برنامه نويسي مهم هست و تقريبا" همه جا استفاده ميشه ASP-ASPX-PHP-PERL و ...
براي آشنايي بيشتر ميتونين به رفرنس همون زباني كه باهاش كار ميكنين رجوع كنين.
من براي مسئله شما يك كد نمونه ميگذارم كه بيشتر متوجه قدرت و سودمندي اين تكنيك بشين:

HTML:
<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
DIM REGEXP
SENTENCE = "اين يك تست است this is a test"
Set REGEXP = New REGEXP
REGEXP.PATTERN = "(ا|ب|ج|د|a|b|c|d|e)"
REGEXP.GLOBAL = TRUE
SET FOUND = REGEXP.EXECUTE(SENTENCE)
RESPONSE.WRITE ("عبارت : " & SENTENCE & "<br>")
RESPONSE.WRITE (" پترن : " & REGEXP.PATTERN & "<br>")
RESPONSE.WRITE (FOUND.COUNT & " مورد پيدا شد" & "<br>")
FOR EACH MATCH in FOUND
	RESPONSE.WRITE ("{" & MATCH.VALUE & "}" & " در محل " & MATCH.FIRSTINDEX+1 & "<br>")
NEXT
%>
</body>
</html>

از بابت توضيح اينكه در PATTERN حروفي رو كه برامون اهميت داره با "|" جدا كرديم كه بمعناي OR‌ هست. نتايج در يك ARRAY برميگرده كه بالطبع براي كار شما همين كه طول اون صفر باشه كافي هست ولي يك حلقه اضافي بعدش گذاشتم كه نشون بدم چه شكلي ميتونين از نتايج استفاده كنين.
 

جدیدترین ارسال ها

بالا