Vb.net 检索由逗号分隔的字符串联接

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 +

预期输出:我想返回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 + 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