簡體   English   中英

將VB6代碼片段轉換為VB.NET

[英]Converting VB6 code snippet to VB.NET

我很難將這個代碼段轉換為VB.NET

Function DecryptPassword(ByVal s As String) As String
    Dim i As Integer
    Dim sPass As String = s.Trim()

    For i = 1 To Len(sPass)
        If Asc(Mid$(sPass, i, 1)) - 5 < 124 Then

            'this line throws "type char $ does not match declared data type char"
            Mid$(sPass, i, 1) = Chr$(Asc(Mid$(sPass, i, 1)) - 5) 

        Else
            Mid$(sPass, i, 1) = Mid$(sPass, i, 1)
        End If
    Next
    DecryptPassword = UCase(sPass)  ' Convert UserPassword to UpperCase
End Function

它在VB6中運行良好但在VB.Net時拋出錯誤..

試試這個版本:

Function DecryptPassword(ByVal s As String) As String

    If String.IsNullOrEmpty(s) Then
        Return String.Empty
    End If

    Dim sbPass As New System.Text.StringBuilder(s.Length)

    For Each oCharacter As Char In s.Trim
        If Asc(oCharacter) - 5 < 124 Then
            sbPass.Append(Convert.ToChar(Asc(oCharacter) - 5))
        Else
            sbPass.Append(oCharacter)
        End If
    Next
    Return sbPass.ToString.ToUpper
End Function

這似乎工作(剛剛刪除像Booji Boy寫的“$”)。

Function DecryptPassword(ByVal s As String) As String
    Dim i As Integer
    Dim sPass As String = s.Trim()

    For i = 1 To Len(sPass)
        If Asc(Mid(sPass, i, 1)) - 5 < 124 Then
            Mid(sPass, i, 1) = Chr(Asc(Mid(sPass, i, 1)) - 5)
        Else
            Mid(sPass, i, 1) = Mid(sPass, i, 1)
        End If
    Next
    DecryptPassword = UCase(sPass)  ' Convert UserPassword to UpperCase 
End Function

只是為了它,一個linq方法。

Function DecryptPassword(ByVal s As String) As String
    Return s.Aggregate(Of String)(String.Empty, Function(acc, c) acc & Char.ToUpper(If(Asc(c) - 5 < 124, Convert.ToChar(Asc(c) - 5), c)))
End Function

要么

Function DecryptPassword(ByVal s As String) As String
    Return New String((From c In s Select Char.ToUpper(If(Asc(c) - 5 < 124, Convert.ToChar(Asc(c) - 5), c))).ToArray)
End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM