Function SplitEA(txt As String, Optional brk As String = " ", Optional rw As Integer = 1) As String
'Developer: Eslam Abdullah
Dim ar() As String, nm(), m As Byte, i%
nm = Array("عبد","ابو","أبو","ام","أم","بن","ابن","إبن","آل",1,"الله","بالله","الزهراء","العهد","النصر","الحق","الاسلام","الإسلام","الدين","الصديق","النور")
With CreateObject("VBScript.RegExp"): .Global = 1
.Pattern = "(^1|" & brk & "|1$)+": txt = .Replace(1 & txt & 1, brk)
End With
If brk = " " Then
ar = Split(Application.Trim(Replace(txt, "_", " ")))
For i = 0 To UBound(ar)
m = Val(CStr(Application.Match(ar(i), nm, 0)))
If m > Application.Match(1, nm, 0) Then ar(i) = "_" & ar(i) Else ar(i) = ar(i) & IIf(m, "_", " ")
Next i
ar = Split(Replace(Replace(RTrim(Join(ar, "")), " _", "_"), "__", "_"))
If rw And Abs(rw) < UBound(ar) + 2 Then SplitEA = Replace(ar((UBound(ar) + 2) * -(rw < 0) + rw - 1), "_", " ") Else SplitEA = ""
Exit Function
End If
ar = Split(Replace(Left(txt, Len(txt) - Len(brk)), brk, "", , 1), brk)
If rw And Abs(rw) < UBound(ar) + 2 Then SplitEA = ar((UBound(ar) + 2) * -(rw < 0) + rw - 1) Else SplitEA = ""
End Function