Разделение строки после символа - PullRequest
1 голос
/ 01 марта 2012

Привет, у меня есть такая строка

MRP^1^1~MRP|MRP+1^1^1~MRP+1|MRP+2^1^1~MRP+2|MRP+3^1^1~MRP+3|MRP+4^1^1~MRP+4

Я хочу разбить его и получить в массив, как это в одной строке.

MRP
MRP+1
MRP+2
MRP+3
MRP+4

Может ли кто-нибудь помочь мне

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Вот еще один способ сделать это с помощью Regex:)

Imports System.Text.RegularExpressions

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles Button1.Click

        '~~> Input string
        Dim strSample As String = "MRP^1^1~MRP|MRP+1^1^1~MRP+1|MRP+2^1^1~MRP+2|MRP+3^1^1~MRP+3|MRP+4^1^1~MRP+4"

        Dim pattern As String = "(MRP\+?[0-9]?)\^1\^1\~"

        Dim matches As MatchCollection = Regex.Matches(strSample, pattern)

        For Each match As Match In matches
            MessageBox.Show (Match.Groups(1).Value)
        Next
    End Sub
End Class

РЕДАКТИРОВАТЬ

Может быть еще один способ (хотя и немного затянутый ...)

Вы можете использовать String.Replace для замены " ^ 1 ^ 1 ~ " на " | ", поэтому у вас есть только 1разделитель, а затем использовать Split для извлечения уникальных значений.Но потом, как я уже говорил выше, это довольно долго.:)

HTH

Сид

1 голос
/ 01 марта 2012

Хотя эта строка кода даст вам результат, который вы ищете, это может быть не лучшим подходом, так как я не знаю, как данные могут изменяться и что их определяет, возможно, немного больше понимания того, что вы пытаетесь чтобы выполнить и откуда эта строка может помочь нам дать вам лучший ответ.

Dim resultArray = myCurrentString.Split(New Char() {"~", "|"}).Where(Function(str) Not str.Contains("^")).ToArray
...