如何将字符串拆分为 VB.net 中输入的长度字符串数组

How to split a string into entered length string array in VB.net

我有一个用户正在输入的字符串,长度取决于输入字符串的长度。 在另一个字段中,用户需要输入他希望从该字符串中得到多少等份的数字。

例如:

Dim unos As String = "Jedna duga linija teksta koju zelim prelomiti na dijelove"

现在我想把它拆分成字符串数组。此字符串的每个部分取决于输入的部分数,示例

EDIT:

我有这个代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim unos As String = TextBox1.Text
        Dim brLinija As Integer = TextBox2.Text
        Dim unosNiz As New List(Of String)
        For i As Integer = 0 To Convert.ToInt32(unos.Length / brLinija) - 1
            unosNiz.Add(unos.Substring(i, unos.Length / brLinija))
        Next
        For Each s As String In unosNiz
            TextBox3.Text = TextBox3.Text & s & vbCrLf
        Next
    End Sub

brLinija为用户输入的整数(字符串数组的行数)

User entered number of lines: 4

当前输出:

Jedna duga lin
edna duga lini
dna duga linij
na duga linija
a duga linija 
 duga linija t
duga linija te
uga linija tek
ga linija teks
a linija tekst
 linija teksta
linija teksta 
inija teksta k
nija teksta ko
Jedna duga lin
edna duga lini
dna duga linij
na duga linija
a duga linija 
 duga linija t
duga linija te
uga linija tek
ga linija teks
a linija tekst
 linija teksta
linija teksta 
inija teksta k
nija teksta ko

我想要的输出:

jedna duga lini
ja teksta koju
zelim prelomiti
na dijelove

我只是很困惑我应该如何将这个字符串正确地拆分成一个子字符串。

谢谢

因此,您可能只希望每行有相同数量的字符。最后一行可以只包含 remainder.

可以迭代指定的行数(前提是数字可以解析为整数,所以使用Integer.TryParse()来验证输入),然后将字符串长度(以chars为单位)除以行数并在每次迭代中获取该字符数。

像这样:

Imports System.Linq

' You should also check whether the TextBox.Text contains any chars
Dim unos As String = TextBox1.Text
Dim brLinija As Integer = 0

If (Not Integer.TryParse(TextBox2.Text, brLinija)) Then
    MessageBox.Show("Invalid input")
    Return
End If

Dim charPerPart = CInt(Math.Ceiling(unos.Length / brLinija))
Dim unosNiz As New List(Of String)
For i As Integer = 0 To brLinija - 1
    unosNiz.Add(String.Concat(unos.Skip(charPerPart * i).Take(charPerPart)))
Next

它生成此输出:

Jedna duga lini
ja teksta koju 
zelim prelomiti
 na dijelove