【问题标题】:Simple Encryption Program in VB Console App using String functionsVB 控制台应用程序中使用字符串函数的简单加密程序
【发布时间】:2016-01-31 02:17:30
【问题描述】:

我是 VB 的新手,我在执行这个程序时遇到了麻烦,因为我不知道如何在一个输入中访问单词中的每个字母。

说,我被要求输入一个字符串,我输入“帮助”,输出应该类似于“$%&(”。

我对此的唯一想法是应该读取输入字符串的每个字母,以便可以确定每个字母上要替换的符号(我不知道如何)。我只知道如何,如果字母将一一输入并且数组的索引是固定的,或者要加密的字母已经声明如下:

    Dim a() As String = {"h", "e", "l", "p"}
    Dim b As String

    Console.WriteLine("String:")
    For Each b In a
        Console.Write(b)
    Next
    Console.WriteLine()
    Console.WriteLine()
    Console.WriteLine("Encryption:")
    For Each b In a
        Select Case b
            Case "A", "a"
                Console.Write("!")
            Case "B", "b"
                Console.Write("+")
            Case "C", "c"
                Console.Write("#")
            Case "D", "d"
                Console.Write("$")
            Case "E", "e"
                Console.Write("%")
            Case "F", "f"
                Console.Write("'")
            Case "G", "g"
                Console.Write("(")
            Case "H", "h"
                Console.Write(")")
            Case "I", "i"
                Console.Write(",")
            Case "J", "j"
                Console.Write(".")
            Case "K", "k"
                Console.Write("~")
            Case "L", "l"
                Console.Write("}")
            Case "M", "m"
                Console.Write("|")
            Case "N", "n"
                Console.Write("[")
            Case "O", "o"
                Console.Write("\")
            Case "P", "p"
                Console.Write("]")
            Case "Q", "q"
                Console.Write("!")
            Case "R", "r"
                Console.Write("^")
            Case "S", "s"
                Console.Write("_")
            Case "T", "t"
                Console.Write(":")
            Case "U", "u"
                Console.Write(";")
            Case "V", "v"
                Console.Write("<")
            Case "W", "w"
                Console.Write("=")
            Case "X", "x"
                Console.Write(">")
            Case "Y", "y"
                Console.Write("?")
            Case "Z", "z"
                Console.Write("@")
        End Select
    Next

    Console.ReadLine()

您的帮助将不胜感激。提前致谢。

【问题讨论】:

  • 这根本不是加密,只是一个简单的密码

标签: arrays vb.net loops


【解决方案1】:
Dim a as String = "whatever your string is"
for i as integer = 1 to len(a)
    Dim curLetter = Mid(a, i, 1) ' this will give you the current character.
    ' do your encrypting here.
Next

有更好的加密方法,但就您的目的而言,这应该足够了。

【讨论】:

  • (1) Mid 已弃用,请勿使用。 Len 也是如此 (2) OP 的代码已经通过 For each b in a 以更好的技术获取当前字母 - 如果 a 是一个字符串,那么它的工作原理与它是一个数组时一样好;这里,b 是当前字母。无需在长度上使用索引循环。 (3) 如果你真的想迭代一个数字索引(但真的,没有理由!),不要使用Mid,而是使用数组索引——a(i) 工作得很好,给你一个@987654329 @,而不是 String(与 For each 循环相同)。
  • 哦,我明白了。它仍然可以在不使用 Mid 和 Len 功能的情况下工作。谢谢。
【解决方案2】:

检查一下:

Imports System.Linq

Module StartupModule
    Private _characterMaps As New Dictionary(Of Char, Char) From {
            {"A"c, "!"c}, {"B"c, "+"c}, {"C"c, "#"c},
            {"D"c, "$"c}, {"E"c, "%"c}, {"F"c, "'"c},
            {"G"c, "("c}, {"H"c, "C"c}, {"I"c, ","c},
            {"J"c, "."c}, {"K"c, "~"c}, {"L"c, "}"c},
            {"M"c, "|"c}, {"N"c, "["c}, {"O"c, "\"c},
            {"P"c, "]"c}, {"Q"c, "!"c}, {"R"c, "^"c},
            {"S"c, "_"c}, {"T"c, ":"c}, {"U"c, ";"c},
            {"V"c, "<"c}, {"W"c, "="c}, {"X"c, ">"c},
            {"Y"c, "?"c}, {"Z"c, "@"c}
        }

    Sub Main()
        Dim original As String = "Hello world!"

        Dim characters = From c As Char In original.ToUpper
                            Select GetEncodedCharacter(c)

        Console.WriteLine(New String(characters.ToArray))

        Console.ReadLine()
    End Sub

    Private Function GetEncodedCharacter(value As Char) As Char
        If _characterMaps.ContainsKey(value) Then
            Return _characterMaps(value)
        Else
            Return value
        End If
    End Function

End Module

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 2013-01-27
    • 2012-07-09
    相关资源
    最近更新 更多