Vb.net 使用StringBuilder随机化文本框中的行顺序

Vb.net 使用StringBuilder随机化文本框中的行顺序,vb.net,stringbuilder,Vb.net,Stringbuilder,我试图将最终结果随机化,想法是让文本框行执行一些代码,然后将其导出到textbox2,代码正在工作,但我想在导出到textbox2时随机化行顺序 Dim newr As New StringBuilder For Each line In texbox1.text.Lines newr.AppendLine(line & " CODE-DONE-1") newr.AppendLine(line &

我试图将最终结果随机化,想法是让文本框行执行一些代码,然后将其导出到textbox2,代码正在工作,但我想在导出到textbox2时随机化行顺序

        Dim newr As New StringBuilder
           For Each line In texbox1.text.Lines
           newr.AppendLine(line & " CODE-DONE-1")
           newr.AppendLine(line & " CODE-DONE-2")
           newr.AppendLine(line & " CODE-DONE-3")

        Next
    textbox2.text = newr.ToString 'Want to randomize Lines Order
范例 如果我放进文本框1

1
2
3
我想要文本框2中的输出

3 Code-Done-1
1 Code-Done-3
2 Code-Done-2
3 Code-Done-3
1 Code-Done-1
3 Code-Done-2
2 Code-Done-3

创建随机类型的类级别变量:

导入系统.Linq
'//
私有只读rand作为新随机变量
'//
使用
StringBuilder
For..Loop
方式:

将sb设置为新的StringBuilder
对于TextBox1.Lines中的每一行。
其中(函数(x)不是String.IsNullOrWhiteSpace(x))。
OrderBy(函数(x)rand.Next)
sb.AppendLine($“{line}代码完成”)
下一个
TextBox2.Text=sb.ToString
OrderBy(Function(x)rand.Next)
部分将洗牌第一个文本框的行,并在第二个文本框中显示它们

或者,您可以使用扩展方法在一行中实现这一点:

TextBox2.Lines=TextBox1.Lines。
其中(函数(x)不是String.IsNullOrWhiteSpace(x))。
OrderBy(函数(x)rand.Next)。
选择(函数(x)$“{x}代码完成”).ToArray
所以选择适合你的方式


根据您的编辑,如果要附加输出,请将
StringBuilder
替换为类级变量
List(of String)
键入并编辑代码,如下所示:

导入系统.Linq
'//
私有只读rand作为新随机变量
私有只读输出为新列表(字符串)
'//
对于TextBox1.Lines中的每一行。
其中(函数(x)不是String.IsNullOrWhiteSpace(x))
Add($“{line}代码完成”)
下一个
TextBox2.Lines=output.OrderBy(函数(x)rand.Next).ToArray

@JQSOFT我不完全理解你的问题,我是vb.net的新手,你能回答一下吗?你需要选择其中一个,我只是发布了多种方法来实现这一点,我不明白这里的意思,我想随机化某人。我不知道如何使用你的code@lolee此
OrderBy(函数(x)rand.Next)
就可以了。它将洗牌第一个文本框的行,并根据您的要求在第二个文本框中显示输出。@lolee确保您在顶部的
Imports系统中有此项。Linq
@lolee最后一个代码将执行您想要的操作。不能将
StringBuilder
用于此任务。一个
列表(字符串)
。尝试最后一个代码块,忘记其余的代码块。此
TextBox2.Lines=output.OrderBy(函数(x)rand.Next).ToArray
将随机化整个列表的顺序,无论它包含9行,更少还是更多。