使用文本文件

时间:2016-12-05 16:33:17

标签: vb.net

我试图让这个程序在一个文本框中取一个普通的英语句子,然后点击一个按钮就可以将它转换成一个textese句子。

任何可以缩短的单词都将替换为文本文件中的单词。

文本文件中的一行示例是

  

任何人,NE1

有52行(替换词)。

解决此问题的最佳方法是什么?嵌套循环可能是一条很好的选择吗?

我没有太多的经验,并且尝试学习的语言更加开放,无法尝试所有方法。

以下是我开始编码过程之前的所有内容,因为我不确定从哪里开始。只有在文本文件中找到的单词才会被替换,所以我想我会使用一个If / Else语句来忽略并留下任何单独找不到的单词。

Public Class frmTextese

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

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

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

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

    Dim line As String
    Dim data() As String
    For i As Integer = 0 To (inputData.Length - 1)
        line = inputData(i)
        data = line.Split(" "c)
    Next

    'txtTextese.Text = 

End Sub

End Class

我想要实现的目标的图像:

enter image description here

1 个答案:

答案 0 :(得分:0)

试试这个并查看评论,以了解正在发生的事情。我应该补充一点,严格来说,这个网站不是代码编写服务,但我有时无法帮助它。这也考虑了单词的大写和单词后的常见标点符号。它有点快速和肮脏,但对于基础知识,似乎工作正常。

Public Class frmTextese
    'create a new empty dictionary where we'll add the pairs of english and
    'textese words
    Dim englishToTextese As New Dictionary(Of String, String)
    Private Sub frmTextese_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'load textese dictionary to an array
        Dim filedata() As String = IO.File.ReadAllLines("k:\textese.txt")
        'Split each line into its elements and add to the dictionary
        For Each item As String In filedata
            Dim splitstring() As String = item.Split(","c)
            englishToTextese.Add(splitstring(0), splitstring(1))
        Next
    End Sub

    Private Function IsCapitalized(word As String) As Boolean
        'If the first character in the word is upper case then return true
        'else return false
        If Mid(word, 1, 1) = Mid(word, 1, 1).ToUpper Then
            Return True
        Else
            Return False
        End If
    End Function

    Private Function GetPunctuation(word As String) As Tuple(Of String, String)
        'If the last character in the word is a punctuation mark, return a pair of values which are :
        'the word without puctuation, and the punctuation. Else
        'return the word and an empty string
        Dim result As Tuple(Of String, String)
        If "!':;?/.,".Contains(word.Last()) Then
            result = New Tuple(Of String, String)(Mid(word, 1, word.Length - 1), word.Last)
        Else
            result = New Tuple(Of String, String)(word, "")
        End If
        Return result
    End Function

    Private Sub btnTranslate_Click(sender As Object, e As EventArgs) Handles btnTranslate.Click
        Dim textese As String = ""
        'split the text in the txtEnglish textbox into its component words including any punctuation
        Dim words() As String = txtEnglish.Text.Split(" "c)
        For Each englishWord As String In words
            'get the word and any punctuation following it as a pair of items
            'and store in punctResult
            Dim punctResult As Tuple(Of String, String) = GetPunctuation(englishWord)
            Dim texteseWord As String
            'store the first item (the word) in englishWord
            englishWord = punctResult.Item1
            'store the secont item (the punctuation or a blank string) in punctuation
            Dim punctuation As String = punctResult.Item2
            'If the english word is in the dictionary
            If englishToTextese.ContainsKey(englishWord.ToLower) Then
                'get the textesevertion
                texteseWord = englishToTextese(englishWord.ToLower)
                'if the original english word was capiutalized, capitalize the textese word
                If IsCapitalized(englishWord) Then
                    texteseWord = texteseWord.ToUpperInvariant
                End If
                'add the word to the textese sentence
                textese = textese & texteseWord & punctuation & " "
            Else
                'if the word isn't in the dictionary, add the original english word and its original state
                'of capitalization and punctuation to the textese sentence
                textese = textese & englishWord & punctuation & " "
            End If
        Next
        'store the new texteze sentence in the textbox
        txtTextese.Text = textese
    End Sub

End Class