Tipulatoid
Цитата:
В принципе, да, если не учитывать грубейшие ошибки в построении функции
1. Для объявления переменных в функции используется Local, но никак не Global.
2. Всегда объявляй переменные в функции.
3. Для того, что бы вернуть результат из функции, используй Return.
Код: $str = "привет, как дела?"
ConsoleWrite($str & @CRLF)
$TranslitedString = _Transliter($str)
ConsoleWrite($TranslitedString & @LF)
Func _Transliter($StringToTranslit)
Local $aCyrrilicTable[66] = ["а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ь", "ъ", "ы", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ь", "Ъ", "Ы", "Э", "Ю", "Я"]
Local $aLatinTable[66] = ["a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "ts", "ch", "sh", "sch", "'", '"', "y", "e", "yu", "ya", "A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "Ts", "Ch", "Sh", "Sch", "'", '"', "Y", "E", "Yu", "Ya"]
Local $aCyrString = StringSplit($StringToTranslit, "")
Local $iTranslitedString, $iCoinc
For $a = 1 To UBound($aCyrString) - 1
$iCoinc = False
For $b = 0 To UBound($aCyrrilicTable) - 1
If $aCyrString[$a] == $aCyrrilicTable[$b] Then
$iCoinc = True
$iTranslitedString &= $aLatinTable[$b]
ExitLoop
EndIf
Next
If $iCoinc = False Then $iTranslitedString &= $aCyrString[$a]
Next
Return $iTranslitedString
EndFunc ;==> _Transliter
Цитата:
Это грамотно?
В принципе, да, если не учитывать грубейшие ошибки в построении функции
1. Для объявления переменных в функции используется Local, но никак не Global.
2. Всегда объявляй переменные в функции.
3. Для того, что бы вернуть результат из функции, используй Return.
Код: $str = "привет, как дела?"
ConsoleWrite($str & @CRLF)
$TranslitedString = _Transliter($str)
ConsoleWrite($TranslitedString & @LF)
Func _Transliter($StringToTranslit)
Local $aCyrrilicTable[66] = ["а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ь", "ъ", "ы", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ь", "Ъ", "Ы", "Э", "Ю", "Я"]
Local $aLatinTable[66] = ["a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "ts", "ch", "sh", "sch", "'", '"', "y", "e", "yu", "ya", "A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "Ts", "Ch", "Sh", "Sch", "'", '"', "Y", "E", "Yu", "Ya"]
Local $aCyrString = StringSplit($StringToTranslit, "")
Local $iTranslitedString, $iCoinc
For $a = 1 To UBound($aCyrString) - 1
$iCoinc = False
For $b = 0 To UBound($aCyrrilicTable) - 1
If $aCyrString[$a] == $aCyrrilicTable[$b] Then
$iCoinc = True
$iTranslitedString &= $aLatinTable[$b]
ExitLoop
EndIf
Next
If $iCoinc = False Then $iTranslitedString &= $aCyrString[$a]
Next
Return $iTranslitedString
EndFunc ;==> _Transliter