Как сделать одну переменную = две другие вместо одной - PullRequest
0 голосов
/ 10 июня 2009

Я опубликовал это раньше и получил несколько ответов, которые до сих пор не работали для меня. Поэтому я собираюсь опубликовать часть своего кода, чтобы вы могли видеть, о чем я говорю. Выделенная часть - это то, что я вытащил из другого поста, и сейчас она не работает для меня. Я использую Visual Studio 2008, и программа была написана на Basic. Я вытащил большую часть этой программы из сети и начал настраивать ее под свои нужды, если вы можете помочь, я ценю это! Спасибо! Если вы знакомы с арабским языком, вы поймете буквы, если нет, просто используйте A и B для переменных.

Public Class Form1
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    If CheckBox1.Checked = True Then
        TextBox2.Text = convert(TextBox1.Text)
    End If
End Sub
Private Sub OpenToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem.Click
    Dim AllText, LineOfText As String

    OpenFileDialog1.Filter = "Text files (*.txt)|*.txt"
    OpenFileDialog1.ShowDialog()
    If OpenFileDialog1.FileName <> "" Then
        Try '
            FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input)
            Do Until EOF(1) '
                LineOfText = LineInput(1)
                AllText = AllText & LineOfText & vbCrLf
            Loop
            TextBox1.Text = AllText
            TextBox1.Select(1, 0)
            TextBox1.Enabled = True
        Catch
            MsgBox("Error opening file.")
        Finally
            FileClose(1)
        End Try
    End If
End Sub
Public Function convert(ByVal gaby As String)
    Try
        gaby = Replace(gaby.ToLower, "a", "ا")
        gaby = Replace(gaby.ToLower, "ab", "اب")
        gaby = Replace(gaby.ToLower, "ac", "اث")
        gaby = Replace(gaby.ToLower, "b", "ب")
        gaby = Replace(gaby.ToLower, "t", "ت")
        gaby = Replace(gaby.ToLower, "c", "ث")
        gaby = Replace(gaby.ToLower, "j", "ج")
        gaby = Replace(gaby.ToLower, "h", "ح")
        gaby = Replace(gaby.ToLower, "o", "خ")
        gaby = Replace(gaby.ToLower, "d", "د")
        gaby = Replace(gaby.ToLower, "z", "ذ")
        gaby = Replace(gaby.ToLower, "r", "ر")
        gaby = Replace(gaby, Chr(59), "ز")
        gaby = Replace(gaby.ToLower, "s", "س")
        gaby = Replace(gaby.ToLower, Chr(58), "ش")
        gaby = Replace(gaby.ToLower, "x", "ص")
        gaby = Replace(gaby.ToLower, "v", "ض")
        gaby = Replace(gaby.ToLower, "u", "ط")
        gaby = Replace(gaby.ToLower, "y", "ظ")
        gaby = Replace(gaby.ToLower, """", "ع")
        gaby = Replace(gaby.ToLower, "g", "غ")
        gaby = Replace(gaby.ToLower, "f", "ف")
        gaby = Replace(gaby.ToLower, "q", "ق")
        gaby = Replace(gaby.ToLower, "k", "ك")
        gaby = Replace(gaby.ToLower, "l", "ل")
        gaby = Replace(gaby.ToLower, "m", "م")
        gaby = Replace(gaby.ToLower, "n", "ن")

        ***gaby = Replace(gaby.ToLower, Chr(63), "ه", 1, Len(gaby) - 1)
        If Microsoft.VisualBasic.Right(gaby, 1) = Chr(63) Then
            Mid$(gaby, Len(gaby), 1) = "ة"
        End If***




        gaby = Replace(gaby.ToLower, "w", "و")
        gaby = Replace(gaby.ToLower, "i", "ي")
        gaby = Replace(gaby.ToLower, "e", "ء")
        gaby = Replace(gaby.ToLower, "", "")

    Catch
        MsgBox("error converting")
    End Try
    Return gaby

End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    TextBox2.Text = convert(TextBox1.Text)

End Sub
Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click
    MsgBox("سلام converter copyrights 2009" & vbCrLf & "تستمتع" & vbCrLf & "" & vbCrLf & "Hope this helps!!!")
End Sub
Private Sub AutoConvertToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AutoConvertToolStripMenuItem.Click
    If CheckBox1.Checked = True Then
        CheckBox1.Checked = False
    Else : CheckBox1.Checked = True
    End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    TextBox1.Text = String.Empty
    TextBox2.Text = String.Empty
End Sub
Private Sub SaveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem.Click
    SaveFileDialog1.Filter = "Text files (*.txt)|*.txt"
    SaveFileDialog1.ShowDialog()
    If SaveFileDialog1.FileName <> "" Then
        FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
        PrintLine(1, TextBox2.Text)
        FileClose(1)
    End If
End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
    End
End Sub
End Class

Ответы [ 2 ]

1 голос
/ 10 июня 2009

Метод Replace принимает строку для заменяемой части, а не просто символ. Как насчет чего-то вроде

gaby = Replace(gaby.ToLower, "1" + Chr(63), "ة" + Chr(63))
gaby = Replace(gaby.ToLower, "1", "ه")

Конечно, порядок замен важен. 1, за которыми следует Chr (63), будут удалены до замены оставшихся 1.

(У меня неправильный порядок в строке результата. Результат должен быть справа налево. Не так ли?)

0 голосов
/ 10 июня 2009

Как я прочитал в вашем другом посте , char меняется на другое значение, если оно находится в конце строки Вы можете использовать двумерный массив для хранения оригинального арабского символа и двух разных латинских символов; затем для каждого символа в вашей арабской строке найдите его в массиве и измените его на первый эквивалентный латинский символ; если это последний символ в вашей исходной строке, измените его на второй латинский символ.

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