在Split的某个索引处替换字符串

时间:2015-06-18 18:34:50

标签: vb.net string visual-studio-2010

使用streamreader逐行读取文本文件。当我到达某一行(即123 | abc | 99999 || ded || 789)时,我想用文本替换第一个空白区域。

到目前为止,我一直在玩

If sLine.Split("|")(3) = "" Then
    'This is where I'm stuck, I want to replace that index with mmm
End If

我希望输出看起来像这样:123 | abc | 99999 | mmm | ded || 789

3 个答案:

答案 0 :(得分:4)

考虑到你已经有代码确定" mmm"需要添加或不添加字符串,您可以使用以下内容:

Dim index As Integer = sLine.IndexOf("||")
sLine = sLine.Insert(index + 1, "mmm")

答案 1 :(得分:2)

您可以拆分字符串,修改数组并重新加入以重新创建字符串:

Dim sLine = "123|abc|99999||ded||789"
Dim parts = sLine.Split("|")
If parts(3) = "" Then
    parts(3) = "mmm"
    sLine = String.Join("|", parts)
End If

答案 2 :(得分:2)

我认为如果你找到一个或多个空元素,你想用数据替换第一个空元素,剩下的就是空白。你可以通过拆分管道来获得一个字符串数组,遍历数组并替换你遇到的第一个空元素并退出循环,然后重新加入你的数组。

Sub Main()
    Dim data As String = "123||abc|99999||ded||789"
    Dim parts = data.Split("|")
    For index = 0 To parts.Length - 1
        If String.IsNullOrEmpty(parts(index)) Then
            parts(index) = "mmm"
            Exit For
        End If
    Next

    data = String.Join("|", parts)
    Console.WriteLine(data)
End Sub

结果:

123|mmm|abc|99999||ded||789