我需要在这里完成一些大学作业(是的,他们在2019年教我们vb.net)。
因此,我需要创建一个程序,该程序将从用户生成的文本中获取每个字符,并将其更改为等于“ Chr(Asc(OriginalCharacter)+ N)”的字符。
例如,如果该数字导致的字符大于字母表的最后一个字符,则应一直返回到其开头并计数(假设为小写)(Asc(OriginalCharacter)+ N-122)。
对于任何给定的数字N,我都已经成功地做到了,但是只有当我制作OriginalText.ToLower时,我才能做到
这是我的代码(变量和内容是用葡萄牙语编写的):
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim Frase As String = InputBox("Frase: ")
Dim NumChars As Integer = Len(Frase)
Dim N As Integer = InputBox("Numero: ")
Dim NovaFrase As String = ""
Dim CharNum As Integer = 0
Dim temp As Integer = 0
Frase = Trim(Frase.ToLower)
For i = 1 To NumChars
CharNum = 0
If Asc(Mid(Frase, i, 1)) = 32 Then
CharNum = Asc(Mid(Frase, i, 1))
NovaFrase = NovaFrase & Chr(CharNum)
ElseIf Asc(Mid(Frase, i, 1)) + N >= 97 Then
CharNum = Asc(Mid(Frase, i, 1)) + N
'MsgBox("charnum: " & CharNum)
While CharNum > 122
temp = CharNum - 122
' MsgBox("temp: " & temp)
CharNum = 96 + temp
' MsgBox("charnum: " & CharNum)
End While
End If
NovaFrase = NovaFrase & Chr(CharNum)
MsgBox(NovaFrase)
Next
End Sub
此外,如果您能就我可以做的更好的事情给我反馈,我将不胜感激:)
学习我的决赛... -_-
P.S .:回答时,请记住,我没有参加任何计算机科学专业课程,而是管理工程学:)
答案 0 :(得分:0)
查看ascii table。您会看到小写字母是从97到122。您正确地完成了这一部分。然后,您会注意到大写字母是65到90。所以您只需要处理这些大写字母即可。
Dim currentCharacter As Integer = Asc(Mid(Frase, i, 1))
If currentCharacter >= 97 AndAlso currentCharacter <= 122 Then
' ...
Else If currentCharacter >= 65 AndAlso currentCharacter <= 90 Then
' ...
End If
此外,VB.NET与VB完全不同。这是一种非常好的语言,并且会在2019年进行更新。您使用的许多方法并不是真正的vb.net,而是旧vb的一部分。