2015-04-02 3 views
-2

Я пытаюсь создать профессиональную программу словарей, чем смогу перевести несколько типов текста, и я разработал ее как this.Проблемы с кодировкой словаря VB.NET

Это словарь на английском и арабском языках, и я использую файл базы данных txt с кодировкой utf8, которая находится ниже на предыдущем снимке.

в \ является разделителем между английским и арабскими словами, все проблемы находится в пределах кнопки субтитров радио (активен в картинке), как предполагается перевести источники из фильмов субтитров, который расположен в основном так:

1 
00:00:07,376 --> 00:00:09,526 
what is your name? 

2 
00:00:09,776 --> 00:00:12,654 
jack 

3 
00:00:12,896 --> 00:00:15,046 
nice one 

проблема заключается в том, что каждый файл субтитров содержит по меньшей мере 500 линии тех и когда я добавить его в словарь и нажмите переводить ничего не произойдет, как он должен определить весь текст как одно слово из базы данных, все, что я я пытаюсь , чтобы сделать, имеет такую ​​функцию:

http://www13.0zz0.com/2015/04/02/17/426589467.jpg

Как словарь перевести слово, найденное в его базе данных и писал, что не имеет смысла к нему именно так, как оно есть.

В прошлом здесь код кнопки радио 1, который называется субтитрами и я положил его под кодом кнопки 1_click, который называется перевести

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    If RadioButton1.Checked = True Then 
     Using reader As StreamReader = New StreamReader("Subtitles.txt") 
      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) 
        End If 
       Next 
      Loop 
     End Using 
    End If 
+1

Пожалуйста, постарайтесь быть более краткими. Ни одна из этих деталей о словарях, переводах, файлах и субтитрах не имеет ничего общего с вашей реальной проблемой. Ваш примерный код для воспроизведения проблемы можно было бы свести к одной строке кода. Он [эта страница] (http://stackoverflow.com/help/how-to-ask) для получения более полезной информации. –

ответ

2

Проблемы с чеком word = TextBox1.Text, который проверяет, если текстовое поле содержит ровно слово и ничего больше, если вы хотите заменить несколько слов, вы могли бы сделать следующим образом:

Using reader As StreamReader = New StreamReader("Subtitles.txt") 
    Dim line As String = reader.ReadLine 
    Dim translatedText As String = TextBox1.Text 
    While(line IsNot Nothing) 
     Dim words As String() = line.Split("\") 
     Dim word As String 
     For Each word In words 
      If translatedText.Contains(word) Then 
       translatedText = translatedText.Replace(word, words(1)) 
      End If 
     Next 
     line = reader.ReadLine 
    End While 
    TextBox2.Text = translatedText 
End Using 

Я немного изменился ваш цикл, потому что Exit Do является просто ugly

+0

не работает http://www11.0zz0.com/2015/04/02/19/852386049.jpg –

+0

Я полагаю, что ваш словарь содержит строку, которая не имеет разделителя '\'. Вы можете проверить правильность разделения строки. Если translText.Contains (word) Then in If words.Length = 2 И translText.Contains (word) Then – Jamby

+0

Большое спасибо –

Смежные вопросы