Arrays 如何在VB.net中将字符串拆分为输入长度的字符串数组
我有一个由用户输入的字符串,长度取决于输入字符串的长度。 在另一个字段中,用户需要键入他希望从该字符串中得到多少相等部分的数字 例如:Arrays 如何在VB.net中将字符串拆分为输入长度的字符串数组,arrays,string,vb.net,user-input,string-length,Arrays,String,Vb.net,User Input,String Length,我有一个由用户输入的字符串,长度取决于输入字符串的长度。 在另一个字段中,用户需要键入他希望从该字符串中得到多少相等部分的数字 例如: Dim unos As String = "Jedna duga linija teksta koju zelim prelomiti na dijelove" 现在我想把它拆分成字符串数组。此字符串的每个部分取决于输入的部分数,例如 编辑: 我有以下代码: Private Sub Button1_Click(sender As Objec
Dim unos As String = "Jedna duga linija teksta koju zelim prelomiti na dijelove"
现在我想把它拆分成字符串数组。此字符串的每个部分取决于输入的部分数,例如
编辑:
我有以下代码:
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是用户输入的整数(字符串数组的行数)
用户输入的行数: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
我只是不知道该如何将这个字符串正确地分割成子字符串
谢谢所以,您可能只是希望每行的字符数相等。最后一行可以只包含余数 您可以迭代指定的行数(前提是该行数可以解析为整数,因此用于验证输入),然后将字符串长度(以字符为单位)除以行数,并在每次迭代中获取该字符数 大概是这样的:
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
所以,您可能只是希望每行的字符数相等。最后一行可以只包含余数 您可以迭代指定的行数(前提是该行数可以解析为整数,因此用于验证输入),然后将字符串长度(以字符为单位)除以行数,并在每次迭代中获取该字符数 大概是这样的:
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
请打开选项“严格”。这是一个由两部分组成的过程。首先,对于当前项目-在解决方案资源管理器中双击“我的项目”。选择左边的Compile。在“选项严格”下拉列表中,选择“启用”。第二,对于未来的项目-进入工具菜单->选项->项目和解决方案->VB默认值。在“选项严格”下拉列表中,选择“启用”。这将使您在运行时避免出现bug。我可以看出它现在没有打开,因为这一行
Dim brLinija As Integer=TextBox2。Text
不会编译。在我编译之后,我得到了以下错误:Option Strict on不允许从“Double”到“Integer”的隐式转换。Option Strict On禁止从“Integer”到“Double”的隐式转换@Mary默认情况下,Option Explicit
打开和Option Infert
关闭吗?是的,抽象类型的情况通常需要打开后者——如果你可以使用Object
来代替,那么有很多方法可以解决这个问题——我认为这是有好处的。@SteveCinq事实上,我已经全部打开了3个。推断只需节省一点打字时间。如果将光标停留在“推断”变量上,您将看到它具有有效类型。我真的不喜欢使用Object。@Wolfhrat是的,这些是您需要纠正的错误,以避免运行时错误。请启用选项Strict。这是一个由两部分组成的过程。首先,对于当前项目-在解决方案资源管理器中双击“我的项目”。选择左边的Compile。在“选项严格”下拉列表中,选择“启用”。第二,对于未来的项目-进入工具菜单->选项->项目和解决方案->VB默认值。在“选项严格”下拉列表中,选择“启用”。这将使您在运行时避免出现bug。我可以看出它现在没有打开,因为这一行Dim brLinija As Integer=TextBox2。Text
不会编译。在我编译之后,我得到了以下错误:Option Strict on不允许从“Double”到“Integer”的隐式转换。Option Strict On禁止从“Integer”到“Double”的隐式转换@Mary默认情况下,Option Explicit
打开和Option Infert
关闭吗?是的,抽象类型的情况通常需要打开后者——如果你可以使用Object
来代替,那么有很多方法可以解决这个问题——我认为这是有好处的。@SteveCinq事实上,我已经全部打开了3个。推断只需节省一点打字时间。如果将光标停留在“推断”变量上,您将看到它具有有效类型。我真的不喜欢使用Object。@Wolfhrat是的,这些是您需要纠正的错误,以避免运行时错误。