如何用x个字符分割字符串

时间:2012-01-08 00:37:06

标签: vb.net string

我有一个程序,用户以字符串的形式输入数字列表。这个数字列表总是8的倍数。

因此列表可以包含8,16,32,40,48等号码。

我需要将该字符串拆分为每8个字符。

例如,假设用户输入了“1234123445674567”

如何将其拆分为字符串数组,其中(0)为“12341234”,(1)为“45674567”

注意:数组的大小必须等于字符串的长度除以8。

像这样:

Dim stringArray(txtInput.Text.Length/8) as String

编辑:我知道我可以通过制作一个计算8个数字的循环并将其拆分成数组来实现这一点,但这将是冗长的并且需要一些变量,我知道有一种更有效的方法。我只是不知道语法。

4 个答案:

答案 0 :(得分:5)

您可以使用For循环和Substring

Dim strings As New List(Of String)

For i As Integer = 0 To Me.txtInput.Text.Length - 1 Step 8
    strings.Add(Me.txtInput.Text.Substring(i, 8))
Next

要将strings列表转换为数组(如果您确实需要),可以使用strings.ToArray()


另外,你可以使用正则表达式和LINQ来制作精彩的单行程序:

Text.RegularExpressions.Regex.Matches(Me.txtInput.Text, ".{8}").Select(Function(x) x.Value)

答案 1 :(得分:4)

这应该将字符串拆分为8个字符的子串

Dim orig = "12344321678900987"
Dim res = Enumerable.Range(0,orig.Length\8).[Select](Function(i) orig.Substring(i*8,8))

答案 2 :(得分:0)

Function slice(ByVal s as String) As String()
    Return (From c As String in s).ToArray()
End Function

答案 3 :(得分:0)

要扩展已接受的答案,即使字符串不能被除数整除,也会将字符串拆分为部分

    Public Function SplitInParts(s As String, partLength As Integer) As IEnumerable(Of String)
        If String.IsNullOrEmpty(s) Then
            Throw New ArgumentNullException("String cannot be null or empty.")
        End If
        If partLength <= 0 Then
            Throw New ArgumentException("Split length has to be positive.")
        End If
        Return Enumerable.Range(0, Math.Ceiling(s.Length / partLength)).Select(Function(i) s.Substring(i * partLength, If(s.Length - (i * partLength) >= partLength, partLength, Math.Abs(s.Length - (i * partLength)))))
    End Function