我在Visual Basic中爲一些大學課外作業編寫一個Hang子手遊戲(儘管我討厭Visual Basic-我更喜歡C++),並且我已經讓自己有點卡住了。 當玩家在屏幕鍵盤上按下一個字母時,需要檢查該字是否存在該字母,並替換該字符串的屏蔽版本中的特定字符(屏蔽版本的「Apple」將是'*****', 例如)。子串以意想不到的方式工作
要替換字符我通過word
字符串文盲,並執行substring
操作來替換maskedWord
中的字符位置。
Str = maskedWord.Substring(0, count) + CStr("A") + maskedWord.Substring(count + 1)
的是相當不言自明;我們將字符切出並用我們想要的字母替換(在本例中爲'A')。 我已經搜索並找到了解決這個問題的方法,但除了Mid
函數沒有找到任何東西外,它無法正常工作。
我很確定我正確地編寫了'Str ='行,但從屏幕截圖中可以看出,它並不按照預期的方式工作。 'DUBITABLY'這個詞的字母'A'是一個字符位置'6',而'Str'中的'A'位置被置於'1'位置。
爲什麼會發生這種情況,我如何才能以預期的方式獲得'Str'格式? 我已驗證'count'設置正確。
的代碼(我加了「MSGBOX」和一對夫婦的其他線路作爲診斷):
Private Sub btnA_Click(sender As Object, e As EventArgs) Handles btnA.Click
btnA.Enabled = False 'Deactivates the button, so the player cannot use it again.
If (InStr(word, "A")) Then 'If the letter is in the string
Dim count As Integer = 0
For Each c As Char In word 'We go over every char in the word..
If (CStr(c) = "A") Then
Dim Str As String = maskedWord
'Str.Remove(count, 1).Insert(count, "A")
Str = maskedWord.Substring(0, count) + CStr("A") + maskedWord.Substring(count + 1)
MsgBox(Str)
count += 1
End If
Next
End If
End Sub
你真的想爲每個字母做這個嗎?難道你不能做一個'main函數'並在觸摸按鈕時調用它,所以你沒有代碼 – 2014-10-06 20:48:30
@returntrue就像我說的,這不是'最終代碼',它會得到改進一旦我解決了這個小問題。對於這個問題:請說出問題的不對,而不是「做一個跑步者」。 – cybermonkey 2014-10-06 20:50:35
爲什麼要將字符串轉換爲字符串? 'CStr的( 「A」)'?這裏不需要對CStr的調用。另外,在VB中,你應該使用'&'來進行字符串連接。 – 2014-10-07 13:45:14