导出文本字符串的有限排列

时间:2014-04-02 17:20:29

标签: vb.net list permutation

这对我来说,我想要的结果列在底部;写在2012年的vb.net。我现在已经达到了愚蠢的地步! (我会尝试任何东西,因为我的逻辑已经消失了!)建议?

    Dim i As Integer = 0
    Dim j As Integer
    Dim strIn As String = "this is some meaningless text"
    Debug.WriteLine(String.Format("{0}" & vbCrLf, strIn))
    Dim arStr As Array = Split(strIn, " "c)
    Dim word As String
    j = arStr.Length
    Do While i + j - 1 < j
        Do While j > 0
            word = String.Join(" ", arStr, i, j - i)
            Debug.WriteLine(String.Format("{0}" & vbTab & "{1}" & vbTab & "{2}", word, i, j))
            i += 1
        Loop
        j -= 1
        i = 0
    Loop

从上面的代码中我想看到的是:

   '                       i   j
   '   this is some text   0   4
   '   this is some        0   3   
   '   is some text        1   3
   '   this is             0   2
   '   is some             1   2
   '   some text           2   2
   '   this                0   1
   '   is                  1   1
   '   some                3   1
   '   text                4   1

我似乎无法格式化。

2 个答案:

答案 0 :(得分:0)

我的列计数是什么?我的意思是你想要它算什么?不要过于简单,但j只是看起来像是迭代的分词的计数。

你能把j和i改成有意义的名字吗?这可能有所帮助。

答案 1 :(得分:0)

我知道这将是一个简单的循环集,但由于某种原因逻辑正在逃避我。以下代码执行我想要的操作。感谢那些回复的人。

        Dim i As Integer = 0
    Dim j As Integer
    Dim strIn As String = "this is some text"
    Debug.WriteLine(String.Format("{0:25} {1}  {2}", strIn, i, j))
    Dim arStr As Array = Split(strIn, " "c)
    Dim word As String
    j = arStr.Length
    While j > 0
        While i + j < arStr.Length + 1
            word = String.Join(" ", arStr, i, j)
            Debug.WriteLine(String.Format("{0:25} {1}  {2}", word, i, j))
            i += 1 'starting at ...
        End While
        i = 0
        j -= 1
    End While
End Sub

变老并且通过简单的事情降低挫折感并没有帮助!