我正在尝试在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
由于我没有找到西里尔文到拉丁文的解决方案,我计划创建一个函数来替换从一个字母到另一个字母的每个字母。
答案 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