(03-11-20, 01:20 PM)Anas Mahmoud كتب : السلام عليكم ورحة الله وبركاته
المشكلة استاذي في منطق الدالة ReplaceString نفسه ،
strChar هو حرف وحيد ولا يمكن استخدامه داخل Select Case لاختبار اكثر من حرف مثل "ال" او "ابن"
جربت نفس الطريقة ولكني عدلت الدالة لتبحث عن البادئات اولا وتمسحها ومن ثم تبحث عن الحروف الغريبة :
كود :
Public Function ReplaceString(In_Text As String) As String
Dim X As Long
Dim strChar As String
Dim strReturn As String
strReturn = ""
If In_Text.StartsWith("ابن") Then
In_Text = In_Text.Substring(3, In_Text.Length - 3)
End If
If In_Text.StartsWith("أبو") Then
In_Text = In_Text.Substring(3, In_Text.Length - 3)
End If
If In_Text.StartsWith("ال") Then
In_Text = In_Text.Substring(2, In_Text.Length - 2)
End If
For X = 1 To Len(In_Text)
strChar = Mid(In_Text, X, 1)
Select Case strChar
'Case "ال"
' strChar = ""
'Case "ابن "
' strChar = ""
'Case "أبو "
' strChar = ""
Case Chr(243), Chr(240), Chr(245), Chr(246), Chr(242), Chr(241), Chr(248), Chr(250)
strChar = ""
End Select
strReturn = strReturn & strChar
Next
ReplaceString = strReturn
End Function
والنتيجة :
اتمنى ان هذا ما كنت تريده
أشكرك جداً على اهتمامك، وأرجو أن نصل في النهاية للحل.
للأسف هذا الحل خطأ كما يظهر في صورتك:
ابن ماجه: بعد تجاهل (ابن) يصبح (ماجه)؛ إذن يجب أن يأتي ترتيبه في الميم؛ أي بعد (كتبي) وقبل (مختار).
مثال آخر:
أبو جيب: بعد تجاهل (أبو) يصبح (جيب)؛ إذن يجب أن يأتي ترتيبه في الجيم؛ أي بعد (الجرجاني) وقبل (الحاكم).
أرجو التكرم بالتعديل لنصل للنتيجة المرجوة، وجزاك الله ووالديك الفردوس الأعلى
عدَّلت في كودك فوصلت للحل، والتعديل هنا:
كود :
In_Text = In_Text.Substring(3, In_Text.Length - 3)إلى:
كود :
In_Text = In_Text.Substring(4, In_Text.Length - 4)وذلك من أجل حذف المسافة بعد (ابن) و(أبو).
أخي الحبيب أنس محمد، أسأل الله تعالى أن يبيض وجهك، وأن يرفع قدرك ومقدارك في الدنيا والآخرة، وأن يرزقك من حيث تحتسب ومن حيث لا تحتسب
فاعلم أنه لا إله إلا الله
