Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 输入英语句子并将其翻译成Textese_Vb.net - Fatal编程技术网

Vb.net 输入英语句子并将其翻译成Textese

Vb.net 输入英语句子并将其翻译成Textese,vb.net,Vb.net,在一个项目中,我输入一个文本文件,在一个“英语”文本框中写一个句子,点击一个按钮,程序将其翻译成“textese”类型的语言。它只会更改文本文件中列出的单词,而忽略其他所有内容。下面是我的代码,不知道出了什么问题,它无法运行并突出显示了If-Then语句,所以我认为我的问题在那里,但不确定是什么。文本文件中的内容以及它们如何用逗号排序/分隔的几个示例 任何人,ne1 你呢,r 吃,8 乐队,b& 是的,b 之前,b4 忙,bz 计算机 Public Class frmTextese Priva

在一个项目中,我输入一个文本文件,在一个“英语”文本框中写一个句子,点击一个按钮,程序将其翻译成“textese”类型的语言。它只会更改文本文件中列出的单词,而忽略其他所有内容。下面是我的代码,不知道出了什么问题,它无法运行并突出显示了If-Then语句,所以我认为我的问题在那里,但不确定是什么。文本文件中的内容以及它们如何用逗号排序/分隔的几个示例

任何人,ne1

你呢,r

吃,8

乐队,b&

是的,b

之前,b4

忙,bz

计算机

Public Class frmTextese

Private Sub btnTranslate_Click(sender As Object, e As EventArgs) Handles btnTranslate.Click

    Dim inputData() As String = IO.File.ReadAllLines("Textese.txt")

    Dim english As Integer = 0
    Dim englishSentence As String = txtEnglish.Text

    Dim result() As String = englishSentence.Split(" "c)

    Do While english < (result.Length - 1)
        Dim line As String
        Dim data() As String
        Dim englishArray As String
        Dim texteseArray As String
        For i As Integer = 0 To (inputData.Length - 1)
            line = inputData(i)
            data = line.Split(","c)
            englishArray = line.Split(","c)(0)
            texteseArray = line.Split(","c)(1)

            If result(i).StartsWith(englishArray(i)) Then
                If englishArray(i).Equals(texteseArray(i)) Then
                    result(i) = texteseArray(i)
                End If
            End If
            txtTextese.Text = result(i)
        Next
    Loop

End Sub

End Class
公共类frmTextese
私有子btnTranslate\u单击(发件人作为对象,e作为事件参数)处理btnTranslate。单击
Dim inputData()格式为String=IO.File.ReadAllLines(“Textese.txt”)
整数形式的英语=0
Dim EnglishEntence As String=txtEnglish.Text
Dim result()作为字符串=EnglishEntence.Split(““c”)
英语时做<(result.Length-1)
将线变暗为字符串
Dim data()作为字符串
朦胧的英语像弦一样
Dim TEXTESEARAY作为字符串
对于i,整数=0到(inputData.Length-1)
行=输入数据(i)
数据=行分割(“,”c)
englishArray=行分割(“,”c)(0)
texteseArray=line.Split(“,”c)(1)
如果结果(i)以(英语字母(i))开始,则
如果englishArray(i).Equals(texteseArray(i))那么
结果(i)=文本数组(i)
如果结束
如果结束
Text=result(i)
下一个
环
端接头
末级

您只需将
结果(i)
英语对照即可。而且,您的
while
循环是一个无止境的循环。搜索textese数组时,一旦找到匹配项,就可以停止搜索并继续搜索下一个英语单词。最后,您应该注意使用描述其用途的变量名

看看这个代码(未测试)。我使字符串比较不区分大小写,但这不是必需的

Private Sub btnTranslate_Click(sender As Object, e As EventArgs) Handles btnTranslate.Click

    'Get all the textese definitions
    Dim inputData() As String = IO.File.ReadAllLines("Textese.txt")

    Dim english As Integer = 0
    Dim englishSentence As String = txtEnglish.Text

    Dim result() As String = englishSentence.Split(" "c)

    Do While english < (result.Length - 1)
        Dim line As String
        Dim data() As String
        Dim englishArray As String
        Dim texteseArray As String
        For i As Integer = 0 To (inputData.Length - 1)

            'Split the textese entry into two parts
            line = inputData(i)
            data = line.Split(","c)
            englishArray = data(0)
            texteseArray = data(1)

            'Compare the word in the english sentence against the word in the textese array
            'using a case insensitive comparison (not required)
            If result(i).Equals(englishArray, StringComparison.CurrentCultureIgnoreCase) Then
                'Replace the word in the sentence with its textese version
                result(i) = texteseArray

                'If we found the word, there is no need to continue searching, so 
                'skip to the next word in the english sentence
                Exit For
            End If
        Next

        'Increment the loop counter to avoid an endless loop
        english = english + 1
    Loop

    'Take the elements of the result array and join them together, separated by spaces
    txtTextese.Text = String.Join(" ", result)

End Sub
Private Sub btnTranslate\u Click(发送者作为对象,e作为事件参数)处理btnTranslate。单击
'获取所有文本定义
Dim inputData()格式为String=IO.File.ReadAllLines(“Textese.txt”)
整数形式的英语=0
Dim EnglishEntence As String=txtEnglish.Text
Dim result()作为字符串=EnglishEntence.Split(““c”)
英语时做<(result.Length-1)
将线变暗为字符串
Dim data()作为字符串
朦胧的英语像弦一样
Dim TEXTESEARAY作为字符串
对于i,整数=0到(inputData.Length-1)
'将textese条目分为两部分
行=输入数据(i)
数据=行分割(“,”c)
englishArray=数据(0)
texteseArray=数据(1)
'将英语句子中的单词与textese数组中的单词进行比较
'使用不区分大小写的比较(非必需)
如果结果(i).Equals(englishArray,StringComparison.CurrentCultureInogoreCase),则
'将句子中的单词替换为textese版本
结果(i)=文本数组
如果我们找到了这个词,就没有必要继续搜索,所以
跳到英语句子中的下一个单词
退出
如果结束
下一个
'增加循环计数器以避免无休止的循环
英语=英语+1
环
'获取结果数组的元素并将它们连接在一起,以空格分隔
txtextese.Text=String.Join(“,结果)
端接头

它是否会给您带来特定的错误?在屏幕最左边的If/Then语句左边有一个大黑点吗?没有红色错误,只是在第一个If语句上有一个黄色箭头“IndexOutfrange Exception was unhandled”(IndexOutfrange Exception was unhandled)。好的,这意味着您的result(i)数组或可能的englishArray(i)数组中没有值(它的null)。看看(i)是什么,确认你在这个位置上真的有价值。你显然不知道我该怎么改变这个?它与结果(i)是相同的想法还是如何工作的?我还是个新手,正在努力学习,我以前从未将文本文件拆分为两个数组并使用过它。我会使用不同字母的嵌套For循环吗?您的
For I
循环基于
inputData
数组的长度,但您使用
I
作为大小不同的其他数组的索引,从而导致尝试访问数组中不存在的项(indexoutfrange)。您的代码存在许多问题-例如,
englishArray
是一个字符串,因此
englishArray(i)
试图从该字符串的
i
位置获取一个字符?在调试器中单步执行代码可能会帮助您找到无法按预期工作的地方。