XenoZ
Gold Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Function fnGetName(aa As String) As String Dim ss() As String, vMale As Boolean vMale = False ss = Split(aa, " ") If Right(ss(2), 3) = "вич" Then vMale = True ' Select Case Right(ss(0), 1) Case "в", "н", "к", "с" If vMale Then ss(0) = ss(0) & "а" Case "а" If Not vMale Then ss(0) = Left(ss(0), Len(ss(0)) - 1) & "ой" Case "ь" If vMale Then ss(0) = Left(ss(0), Len(ss(0)) - 1) & "я" Case Else End Select ' Select Case Right(ss(1), 2) Case "жа", "ша", "ща", "ча" ss(1) = Left(ss(1), Len(ss(1)) - 1) & "и" Case Else Select Case Right(ss(1), 1) Case "а" ss(1) = Left(ss(1), Len(ss(1)) - 1) & "ы" Case "я" ss(1) = Left(ss(1), Len(ss(1)) - 1) & "и" Case "й", "ь" If vMale Then ss(1) = Left(ss(1), Len(ss(1)) - 1) & "я" Else ss(1) = Left(ss(1), Len(ss(1)) - 1) & "и" Case Else ss(1) = Left(ss(1), Len(ss(1)) - 1) & "а" End Select End Select ' Select Case Right(ss(2), 3) Case "вич" ss(2) = ss(2) & "а" Case "вна" ss(2) = Left(ss(2), Len(ss(2)) - 1) & "ы" Case Else End Select fnGetName = Join(ss, " ") End Function Sub ZTest() MsgBox fnGetName("Иванова Шахерезада Степановна") End Sub |