我一直在努力如何完成這項任務很長一段時間,並決定我需要一些幫助。我必須將莫爾斯碼轉換爲英文,並輸出所有可能的翻譯到列表框(甚至是亂碼)。 搜索已經出現了很多不同的線程,但沒有用,因爲它們不是這種語言,或者它們已經過時(VB6)代碼。 分配狀態:解碼莫爾斯電碼問題
使用典型的點和破折號( - )的代碼的書面陳述,字... ---在莫爾斯電碼..-....-()。可能是名字索非亞或歐根尼的編碼,取決於你在哪裏拆分字母: ... | --- | ..-。| .. | .-。索非亞 。| ..- | - 。。| 。 - - 。| .. | .- - Eugenia
其中管道只是顯示如何分解字符串。
我已經嘗試了「For Each」循環,「For」循環,寫入文本文件和回讀,分割字符串1到4個字符,Select Case方法和上述所有組合,我可以想到沒有運氣。 我的For循環會產生一組26個任務,但不包含任何單詞,只是一系列空格,然後是單個字母26次,然後是該字母兩次26次,依此類推。 文本文件和將字符串拆分爲一個或兩個字符導致E,A或T用於輸出,每個都在其自己的行上乘以字符串中的迭代次數,並且將字符串拆分三個或四個字符會導致相同或者如果字符串沒有均勻分割,則會出現IndexOutOfRange錯誤。 我已經回到了我編寫的實際工作中最接近的東西,但輸出的結果仍然是英文字母。
這次我使用了一個Linq查詢,並希望得到任何幫助,瞭解如何正確地遍歷字符串以完成作業所要求的內容。
這裏是我的代碼至今:
Imports System.IO
Imports System.Text
Public Class Form1
Dim MorseCode() = File.ReadAllLines("MorseCode2.txt")
Private Sub input_TextChanged(sender As Object, e As EventArgs) Handles input.TextChanged
End Sub
Private Sub output_SelectedIndexChanged(sender As Object, e As EventArgs) Handles output.SelectedIndexChanged
End Sub
Private Sub help_Click(sender As Object, e As EventArgs) Handles help.Click
'Displays the Morse Code and English letter equivalents
Process.Start("MorseCode.txt")
End Sub
Private Sub translate_Click(sender As Object, e As EventArgs) Handles translate.Click
Dim userText As String = input.Text
Dim temp As String
Dim word As String
'Search the users entry for possible translations
Dim query = From line In MorseCode
Let data = line.split(","c)
Let engLtr = data(0)
Let code = data(1)
Select engLtr, code
For Each code In query
If userText.Contains(code.code) Then
temp = code.engLtr
word = String.Concat(temp + temp)
output.Items.Add(word)
End If
Next
End Sub
End Class
我敢肯定我的錯誤是在.Concat呼叫,但沒有我嘗試已經解決了這個問題。
謝謝你給我的任何指針!
編輯補充僞代碼:
1 - 讀取輸入字符串
2 - 突破字符串爲單個元素各1個符號,匹配符號信,發送到溫度,CONCAT字符串轉換爲文字,輸出各字列表框
3 - 重讀串闖入兩個符號每個 「......」
4 - 「...」 三個符號每個 「......」
5 - 「...」四個符號每個「......」
Eew,他們教VB嗎?毛。至於賦值,它是一個返回可枚舉字符串的方法中的尾遞歸。收益報表將使這個非常乾淨。 「查找所有匹配字符串開頭的字符,對於每個字符,再次調用相同的方法傳遞剩餘的字符串,然後將每個返回的結果與此字符連接起來,並將其傳遞給直接調用者。就這麼簡單。 – Will
@有些學校還會教cobol麼?你應該刪除你的第一句...... – Fredou
@如果他們教C#或Java,它會「更酷」嗎? '因爲這些語言與VB.Net非常相似。 – ChicagoMike