2011-11-02 78 views
2

海蘭每一個空間,我有這樣的代碼VB.NET Windows窗體中字符串

Dim RandomNumber As New Random() 
Dim msg As String = "My name is Nick from Neptune" 
For each space as char in msg 
msg = msg.replace(" ", RandomNumber.Next(0, 33)) 
Next 

但它不工作。 有人可以幫我嗎? 在結束的字符串應該是這樣的:提前和對不起我的英語

My12name455is22Nick88from66Neptune 

感謝。

回答

2

我改變了它的工作,我道歉:

Option Infer On 

Module Module1 

Sub Main() 
    Dim RandomNumber As New Random() 
    Dim msg As String = "My name is Nick from Neptune" 
    Dim newmessage As String = "" 
    Dim d = msg.Split(" ").ToList() 

    For Each t In d 
     newmessage = newmessage & Convert.ToString(t) & RandomNumber.[Next](0, 33).ToString() 
    Next 

    Console.WriteLine(newmessage) 
End Sub 

前端模塊

enter image description here

+0

它不工作:(但感謝你的工作 –

+0

@KreepN你的很多比我更優雅。我覺得你的問題是,VB不具有無功嘗試使用對象,而不是。 –

+0

固定它。我主要用c#編寫,所以這是一個誠實的錯誤。 – KreepN

0

有與您所寫的幾個問題。最主要的是Message.Replace方法將用所生成的第一個隨機數替換字符串中的所有空格。嘗試分割空格處的字符串,然後用它們之間的隨機數重新加入它們。像這樣的東西。

Dim RandomNumber As New Random() 
Dim msg As String = "My name is Nick from Neptune" 
Dim temp = msg.Split(CChar(" ")) 
Dim first As Boolean = True 

For Each s As String In temp 
    If first Then 
     msg = s 
    Else 
     msg = msg + RandomNumber.Next(0, 33).ToString + s 
    End If 
    first = False 
Next 
+0

The第二個循環應該是每個循環的一個循環(因爲你不需要索引h ERE)。一旦你引入一個布爾變量來檢查我們是否在循環的第一個(或最後一個)迭代中,第一個循環可以被合併到第二個循環中。 –

+0

感謝馬克霍爾爲您的快速回答 –

+0

@KonradRudolph你是對的。它看起來好多了眼睛 –

相關問題