Как заменить нежелательное значение в строке на регулярное выражение - PullRequest
0 голосов
/ 04 апреля 2019

Строка, содержащая следующие значения:

Dim abc As String = 'UserId1'|'ValueA1'|'ValueB1'|'ValueC1', 'UserId2'|'ValueA2'|'ValueB2'|'ValueC2'

Текущая функция

Dim arrAll As String() = abc.Split(",")
Dim UserIdList As New List(Of String)
Dim ValueAList As New List(Of String)
Dim ValueBList As New List(Of String)
Dim ValueCList As New List(Of String)

For i = 0 To UBound(arrAll)
    Dim arrSeparate As String() = arrAll(i).Split("|")
    UserIdList.Add(arrSeparate(0))
    ValueAList.Add(arrSeparate(1))
    ValueBList.Add(arrSeparate(2))
    ValueCList.Add(arrSeparate(3))
Next

Я пытаюсь разделить указанное выше значение на 4 отдельных списка без использования функций Split / Loop.

С помощью регулярного выражения я могу получить только все «UserId» или «ValueC». Как я могу получить «ValueA» или «ValueB»? Я не знаком с регулярным выражением. Любая помощь будет принята с благодарностью.

Регулярное выражение

  1. \ | '([^'] *) '
  2. '([^'] *) '\ |

Результат

  1. 'UserId1', 'UserId2'
  2. 'ValueC1', 'ValueC2'

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Если у вас есть рабочий код с циклами, зачем вам нужно регулярное выражение?Всего несколько изменений в вашем коде.Небольшое c в массиве Char говорит компилятору, что это Char, а не String.

Если у вас не включен Option Strict - включите его СЕЙЧАС!

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim abc As String = "'UserId1'|'ValueA1'|'ValueB1'|'ValueC1', 'UserId2'|'ValueA2'|'ValueB2'|'ValueC2'"
    Dim arrAll As String() = abc.Split(","c)
    Dim UserIdList As New List(Of String)
    Dim ValueAList As New List(Of String)
    Dim ValueBList As New List(Of String)
    Dim ValueCList As New List(Of String)
    'To get rid of single quote and spaces
    Dim charsToTrim() As Char = {"'"c, " "c}
    For i = 0 To UBound(arrAll)
        Dim arrSeparate As String() = arrAll(i).Split("|"c)
        UserIdList.Add(arrSeparate(0).Trim(charsToTrim))
        ValueAList.Add(arrSeparate(1).Trim(charsToTrim))
        ValueBList.Add(arrSeparate(2).Trim(charsToTrim))
        ValueCList.Add(arrSeparate(3).Trim(charsToTrim))
    Next
    'Inspect the values in your lists
    Debug.Print("ID List")
    For Each s In UserIdList
        Debug.Print(s)
    Next
    Debug.Print("A List")
    For Each s In ValueAList
        Debug.Print(s)
    Next
    Debug.Print("B List")
    For Each s In ValueBList
        Debug.Print(s)
    Next
    Debug.Print("C List")
    For Each s In ValueCList
        Debug.Print(s)
    Next
End Sub
0 голосов
/ 04 апреля 2019

это должно вернуть все последовательности символов, не связывающиеся с | или '

[^'\|]*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...