Vb.net 使用StringBuilder随机化文本框中的行顺序
我试图将最终结果随机化,想法是让文本框行执行一些代码,然后将其导出到textbox2,代码正在工作,但我想在导出到textbox2时随机化行顺序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 &
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行,更少还是更多。