我正在编写一个简单的hangman程序,我想在我的变量中替换一些存储已找到的单词的字母。
以下是代码:
Replace(wordLettersFound, Mid(wordLettersFound, counter, 1), letter)
wordLettersFound,counter和letter是我正在使用的3个变量。
变量是此脚本之前的所有下划线,但它不会更改!任何人都可以帮我这个吗?
P.S。 我不知道我正在使用什么版本的VB,视觉工作室社区2015只是说' visual basic'。
答案 0 :(得分:2)
Replace
不会修改字符串,但会返回带有替换字符串的新字符串,因此您应该将其分配给变量:
wordLettersFound = Replace(wordLettersFound, Mid(wordLettersFound, counter, 1), letter)
答案 1 :(得分:0)
另一种替换方式,
Dim theLetters As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzAAA"
theLetters = theLetters.Replace("A"c, "@"c)
答案 2 :(得分:0)
还有另一种方法可以替换字符串中的字符。在你的情况下使用替换功能有点尴尬,因为在开始时,所有字符都是下划线 - 替换,因为你正在使用它将用找到的字符替换所有字符。< / p>
相反,您可以将字符串剪切到所需替换项左侧的片段,添加替换字符,然后添加其余字符串。那条线是评论之后的那条线&#34;剁起来并将角色放在正确的位置&#34;在这段代码中:
Module Module1
Sub Main()
Dim wordToFind = "alphabet"
' make a string of dashes the same length as the word to find
Dim foundWord = New String("-"c, wordToFind.Length)
While foundWord <> wordToFind
Console.Write("Enter your guess for a letter: ")
Dim guess = Console.ReadLine()
' make sure the user has only entered one character
If guess.Length = 1 Then
' see if the letter is in the string
Dim pos = wordToFind.IndexOf(guess)
While pos >= 0
' chop foundWord up and put the character in the right place
foundWord = foundWord.Substring(0, pos) & guess & foundWord.Substring(pos + 1)
' see if there are any more of the same letter
pos = wordToFind.IndexOf(guess, pos + 1)
End While
' show the user the current progress
Console.WriteLine(foundWord)
Else
Console.WriteLine("Please enter just one letter!")
End If
End While
Console.WriteLine("You did it!")
Console.WriteLine("Press enter to leave the program.")
Console.ReadLine()
End Sub
End Module
N.B。不要将所有代码直接用于家庭作业,因为老师会找到这个。那是做其他人做作业的 - 你知道你是谁;)