Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在VB.net中将字符串拆分为输入长度的字符串数组_Arrays_String_Vb.net_User Input_String Length - Fatal编程技术网

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是的,这些是您需要纠正的错误,以避免运行时错误。