想要在 VB 6.0 中的特定位置替换一个字符

Want to replace one character at specific position in VB 6.0

wordString --> 填空词。 key-->字符被替换。 我也有密钥在 keyPos 中的位置,它是随机计算的

我正在做填空游戏。在这里我需要在随机位置创建空白。我正在使用 Replace(wordString, key, "_", , 1)

但这只是替换了第一次出现的情况。如果我的 wordString 有像 APPLE 这样的重复字母,它总是会替换第一个 P

我也想替换第二个 P。喜欢 AP_LE.

好的,这是 vb.net 而不是 vb6,但这里是::

你应该使用 word 方法而不是 character 方法:

Dim sentence as String = "My apple is red."
Dim wordsInSentence() as String = sentence.Split()

Dim Rnd as new Random
Dim wordToBlank as String = wordsInSentence(Rnd.next(0, wordsInSentence.length))
Dim blankedSentence as String = sentence.Replace(wordToBlank, "___")

并且 blankedSentence 将包含您的 sentence 并随机删除一个单词。

My ___ is red.

编辑:要改为空白字符串中的随机 字符 ,请随机化字符串中的字符索引,并且(如果它不是 space)空白:

Dim sentence as String = "My apple is red."

Dim Rnd as new Random
Dim index As single = Rnd.next(0, sentence.length)
While sentence.Substring(index,1) = " "
    index = Rnd.next(0, sentence.length)
End While

Dim blankedSentence as String = sentence.Remove(index,1).Insert(index, "_")

并且 blankedSentence 包含您的 sentence 随机非 space 字母空白:

My ap_le is red.

这不是一个很好的方法,因为所有单词的所有字母(包括标点符号)都可以是空白字符。除此之外,它会让你得到你想要的。

VB6 版本:

Dim sentence as String
Dim index As Integer
Dim intUpperBound As Integer
Dim intLowerBound As Integer

sentence = "My apple is red."
intLowerBound = 1 'assuming the first character of the word
intUpperBound = Len(sentence)

Randomize 'initialize the random number generator
index = Int((intUpperBound - intLowerBound + 1) * Rnd) + intLowerBound
While Mid$(sentence, index, 1) = " "
    index = Int((intUpperBound - intLowerBound + 1) * Rnd) + intLowerBound
Wend

Dim blankedSentence As String
blankedSentence = sentence
Mid(blankedSentence, index, 1) = "_" 'replace the current character at index with the new character

我自己找到了另一个解决方案。 它有3个文本框txtInput、txtOutput、txtKeyPos和一个命令按钮command1

代码:

Private Sub Command1_Click()
t1 = Left$(txtInput.Text, Int(txtKeyPos.Text) - 1)
t2 = Right$(txtInput.Text, (Len(txtInput.Text)) - Int(txtKeyPos.Text))
txtOutput.Text = t1 & "_" & t2
End Sub

这符合我的目的。