2011-11-02 84 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你是对的。它看起来好多了眼睛 –