Vb.net 检索由逗号分隔的字符串联接
预期输出:我想返回2的组合,在下面的例子中,每个组合由逗号和Vb.net 检索由逗号分隔的字符串联接,vb.net,Vb.net,预期输出:我想返回2的组合,在下面的例子中,每个组合由逗号和vbcrlf分隔,例如: 等等 问题是下面的代码没有 它返回行中的值(1,2,3,4,5,6,7,8,9,10,11,12),依此类推 如何使button1中的代码正常工作 Function GetCombinations(ByVal depth As Integer, ByVal values As String()) As IEnumerable(Of String) If depth > values.Count +
vbcrlf
分隔,例如:
等等
问题是下面的代码没有
它返回行中的值(1,2,3,4,5,6,7,8,9,10,11,12
),依此类推
如何使button1中的代码正常工作
Function GetCombinations(ByVal depth As Integer, ByVal values As String()) As IEnumerable(Of String)
If depth > values.Count + 1 Then Return New List(Of String)
Dim result = New List(Of String)
For i = 0 To depth - 1
For y = 0 To values.Count - 1
If i = 0 Then
result.Add(values(y))
Else
result.Add(values(i - 1) + values(y))
End If
Next
Next
Return result
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim data_array As String() = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14",
"15"}
Dim result = GetCombinations(2, data_array)
Dim resultx As String = String.Join(",", result)
TxtListScanTxt.AppendText(resultx)
End Sub
这是一种测试和工作的方法
Public Sub Main()
Dim data_array As String() = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14",
"15"}
dim second as boolean
dim sb = new stringbuilder()
For i as integer = 0 To data_array.Length - 1
if second then
sb.AppendLine(data_array(i -1) & "," & data_array(i))
second = false
continue for
end if
if i = data_array.Length - 1 then
sb.AppendLine(data_array(i))
end if
second = true
next
Console.WriteLine(sb.ToString())
End Sub
我的解决方案
Dim data_array As String() = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14",
"15"}
Dim depth As Integer = 3, i As Integer = 1
Dim result As StringBuilder = New StringBuilder
For y = 0 To data_array.Count - 1
If i < depth Then
result.Append(data_array(y) + ",")
i += 1
Else
result.Append(data_array(y) + vbNewLine)
i = 1
End If
Next
RichTextBox1.AppendText(result.ToString)
Dim data_数组作为字符串()={“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“11”、“12”、“13”、“14”,
"15"}
Dim深度为整数=3,i为整数=1
将结果调整为StringBuilder=新StringBuilder
对于y=0到数据_array.Count-1
如果我是那么
结果.追加(数据数组(y)+“,”)
i+=1
其他的
result.Append(数据数组(y)+vbNewLine)
i=1
如果结束
下一个
RichTextBox1.AppendText(result.ToString)
删除第一个循环(对于i=0到深度-1
)。您需要一个循环。显然,由于您不需要IEnumerable(字符串)
,而只需要一个字符串,所以将每个数据数组[i]
值附加到StringBuilder,再加上环境Mod depth=0
,否则”,“
。getcombines
方法可以返回合成的字符串:返回[StringBuilder].ToString().TrimEnd(“,”c)
。哈哈,很好!但这不是学生需要学习的。学生在学习loops@T.S.IDK OP是否是学生,但代码解决了问题!@T.S.更新了代码。从技术上来说,没有任何变化。您能为您的学生提供更多的解释吗answer@C_Ogoo补充说明。
Dim data_array As String() = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14",
"15"}
Dim depth As Integer = 3, i As Integer = 1
Dim result As StringBuilder = New StringBuilder
For y = 0 To data_array.Count - 1
If i < depth Then
result.Append(data_array(y) + ",")
i += 1
Else
result.Append(data_array(y) + vbNewLine)
i = 1
End If
Next
RichTextBox1.AppendText(result.ToString)
Sub Main(args As String())
Dim arr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"}
'// First, we join all array values with comma to get a string.
'// Second, we find each group of two digits separated by comma (\d+,\d+)
'// and replace it ($1) with the same group PLUS the new-line character.
Dim x = Regex.Replace(String.Join(",", arr), "(\d+,\d+),?", $"$1{vbCrLf}")
End Sub