2014-04-17 113 views
0

我正尝试在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

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

也许研究“查找表”可以帮助你做出更好的功能。

编辑:维基百科条目Lookup table应该是一个好的开始。

下面是一个简单的例子:

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 
+0

谢谢你,你可以给有关查找表中的一些链接,因为我不知道的事情。 – Jovica

+1

@ user3338345我已经使用链接和简单示例编辑了我的答案。 –

相关问题