Вслед за аналогичными темами в VB6 (Транслитерация) и VBA (Транслит) хотелось бы уточнить пару моментов по данной теме применительно к VB.NET
Вот собственно текущая реализация
- Код: Выделить всё
Imports System
Class Translit
Shared Sub Main(ByVal CmdArgs() As String)
Dim Cyrillic_alphabet() As Char = {"А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я"}
Dim Translit() As String = {"A", "B", "V", "G", "D", "E", "E", "Zh", "Z", "I", "Y", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "Ts", "Ch", "Sh", "Sch", "'", "Y", "'", "E", "Yu", "Ya"}
'Dim a As String = vbNullString
'For Each st As String In CmdArgs
' a = a & st & " "
'Next
Dim a As String = Console.ReadLine
For Each ch As Char In a
If Char.IsLetter(ch) Then
For i As Byte = 0 To Cyrillic_alphabet.Length - 1
If (ch = Cyrillic_alphabet(i)) Or (ch = Char.ToLower(Cyrillic_alphabet(i))) Then
If Char.IsLower(ch) Then
Console.Write(Char.ToLower(Translit(i)))
Else
Console.Write(Translit(i))
End If
End If
Next
Else
Console.Write(ch)
End If
Next
Console.Read()
End Sub
End Class
'*Cyrillic_alphabet - не полон, представлен только современным русским алфавитом
Сначала отделяю символы от знаков и цифр, далее сверка с алфавитом и вывод символа в нужном регистре. Вопрос, как отличать латинские символы, перевод которых не требуется, их просто нужно напечатать? Не вводить ещё и латинский алфавит?
Будь-то С и соответственная кодовая страница, всё решилось бы по кодам символов
- Код: Выделить всё
//Latin
//for (int i=65;i<91;i++)
//for (int i=97;i<123;i++)
//Cyrillic
//for (int i=128;i<160;i++)
//for (int i=160;i<175;i++)
//for (int i=224;i<240(255);i++)
А как в VB.NET подловить код Unicode символа? Да и вообще как протабулировать Unicode символы? На C коды (ASCII, но не Юникода) это можно сделать так
- Код: Выделить всё
for (int i=0;i<255;i++)
printf("%i %c\n",i,i);