功能将西里尔语转换为拉丁语

时间:2014-04-17 12:42:51

标签: vb.net replace converter cyrillic latin

我正在尝试在VB.net中创建自定义转换西里尔文到拉丁文本功能。我从来没有尝试过定制功能,所以我不知道自己做错了什么。我有一个问题,而且,函数不起作用:对象引用未设置为对象的实例。

    Public Function ConvertCtoL(ByVal ctol As String) As String

    ctol = Replace(ctol, "Б", "B") 
    ctol = Replace(ctol, "б", "b")

**End Function** ' doesn't return a value on all code paths

由于我没有找到西里尔文到拉丁文的解决方案,我计划创建一个函数来替换从一个字母到另一个字母的每个字母。

1 个答案:

答案 0 :(得分:1)

您需要Return ctol告诉它返回什么值。

也许正在研究"查找表"会帮你做一个更整洁的功能。

编辑:[{3}}的维基百科条目应该是一个好的开始。

这是一个简单的例子:

Imports System.Text

Module Module1

    Function ReverseAlphabet(s As String) As String
        Dim inputTable() As Char = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()
        Dim outputTable() As Char = "ZYXWVUTSRQPONMLKJIHGFEDBCA".ToCharArray()
        Dim sb As New StringBuilder

        For Each c As Char In s
            Dim inputIndex = Array.IndexOf(inputTable, c)
            If inputIndex >= 0 Then
                ' we found it - look up the value to convert it to.
                Dim outputChar = outputTable(inputIndex)
                sb.Append(outputChar)
            Else
                ' we don't know what to do with it, so leave it as is.
                sb.Append(c)
            End If
        Next

        Return sb.ToString()

    End Function

    Sub Main()
        Console.WriteLine(ReverseAlphabet("ABC4")) ' outputs "ZYX4"
        Console.ReadLine()
    End Sub

End Module