1

Тема: Функция для транслита русских букв на английские на LotusScript

Это LotusScript  функция для транслита русских букв на английские.
Сделана чатом жпт, а потом дорабтана вручную, так как код был нерабочий.

Sub Click(Source As Button)
    On Error Goto ErrH   
   
    Dim russianText As String
    Dim transliteratedText As String
   
    russianText = "ПРивет мир! это проверка замены текста скриптом чата ЖПТ. Пока что так себе..."
    Print russianText
    transliteratedText = TransliterateRussianToEnglish(russianText)
    Print transliteratedText
   
    Exit Sub
ErrH:
    Print "Ошибка" & Error(Err) & " в строке " & Erl   
    Exit Sub
End Sub

Поделиться

2

Re: Функция для транслита русских букв на английские на LotusScript

Function TransliterateRussianToEnglish(inputText As String) As String
    Dim russianChars As Variant
    Dim englishChars As Variant
    Dim resultText As String
   
    Dim currentChar As String
    Dim charIndex As Variant
    Dim isUpperCase As Boolean
   
    Dim i As Integer
    On Error Goto ErrH   
    ' Список русских букв
    russianChars = Split("а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я", " ")
   
    ' Список английских букв, соответствующих русским
    englishChars = Split("a b v g d e yo zh z i y k l m n o p r s t u f h c ch sh sh ' y ' ' yu e yu ya", " ")
   
   
    resultText = ""
   
    ' Итерация по каждому символу во входной строке
    For i = 1 To Len(inputText)
       
        currentChar = Mid(inputText, i, 1)
       
        ' Поиск индекса текущего символа в списке русских букв
       
        charIndex = Arraygetindex(russianChars, Lcase(currentChar))
       
        ' Если символ найден, добавляем соответствующий ему английский символ
        If charIndex > 0 Then
               'Print    currentChar  " ---  " Cstr( englishChars(charIndex ))
            ' Определение регистра буквы
           
            isUpperCase = (currentChar = Ucase(currentChar))
           
            ' Добавление английской буквы с учетом регистра
            If isUpperCase Then
                resultText = resultText & Ucase(englishChars(charIndex ))
            Else
                resultText = resultText & Lcase(englishChars(charIndex ))
            End If
        Else
            ' Если символ не найден, оставляем его без изменений
            resultText = resultText & currentChar
        End If
       
       
    Next
   
    TransliterateRussianToEnglish = resultText
   
    Exit Function
ErrH:
    Print "Ошибка TransliterateRussianToEnglish " & Error(Err) & " в строке " & Erl   
    Exit Function
End Function

Поделиться