如何将字符串拆分为 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
我有一个用户正在输入的字符串,长度取决于输入字符串的长度。 在另一个字段中,用户需要输入他希望从该字符串中得到多少等份的数字。
例如:
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