与翻译应用程序的msgbox困境

时间:2014-06-11 20:26:59

标签: vb.net visual-studio-2008

我正在为我的部落建立语言翻译。我完成了大约90%。我遇到的唯一问题是我想让msgbox弹出并说“找不到翻译。”,当有人输入一个短语或一个单词,在文本文件中找不到“cat | nish stu”呀“。当找不到翻译时,我可以弹出它,但是当我输入一个发现msgbox弹出的单词时,这就是问题所在。我不知道它是否与它正在运行do while(true)循环有关,或者我只是没有正确编码翻译按钮。代码是:

Do While (True)
    Dim line As String = reader.ReadLine
    If line Is Nothing Then    
        Exit Do
    End If
    Dim words As String() = line.Split("|")
    Dim word As String
    For Each word In words
        If word = TextBox1.Text Then
            TextBox2.Text = words(+1)
        Else
            MessageBox.Show("Translation is not available")
        End If
        If "" = TextBox1.Text Then
            MessageBox.Show("No entry was made.")
        End If
    Next
Loop

1 个答案:

答案 0 :(得分:0)

假设您的文件格式为:

cat | nish stu yah

使用|字符周围的空格,您的问题可能是String.Split不会删除空格,因此在这种情况下,您最终会得到:

words(0) = "cat "
words(1) = " nish stu yah"

因此,如果TextBox1.Text是" cat",则它将不匹配。您可以将比较更改为类似的内容,以使其更宽容:

If word.Trim().ToLower() = TextBox1.Text.Trim().ToLower() Then

但是,您并不需要遍历words,因为您只想将用户输入与未翻译版本进行比较。您还在翻译文件中显示每行的消息框。我想你可能想要这样的东西(完全未经测试):

If "" = TextBox1.Text Then
    MessageBox.Show("No entry was made.")
    Exit Sub
End If
Dim found As Boolean = False
Do While (True)
    Dim line As String = reader.ReadLine()
    If line Is Nothing Then    
        Exit Do
    End If
    Dim words As String() = line.Split("|"c)
    If words(0).Trim().ToLower() = TextBox1.Text.Trim().ToLower() Then
        TextBox2.Text = words(1)
        found = True
        Exit Do
    End If
Loop
If Not found Then
    MessageBox.Show("Translation is not available")
End If

仍然不是最优雅的代码,但希望能指出正确的方向。