Совпадение и замена первого и последнего символа и подстроки в строке с помощью регулярного выражения VB NET - PullRequest
3 голосов
/ 29 апреля 2020

Извините за мой простой вопрос, но я не знаю, как это сделать.

У меня есть эта строка:

Dim SourceString = "{capital?} has a bridge for {people?}"

Теперь я хочу ResultString как это:

ResultString = "capital_Den has a bridge for people_Den"

Я использовал

Dim str As String = "{capital?} has a bridge for {people?}"
Dim str1 As String str1 = Regex.Replace(str, "\{?\?\}", "_DEN}")

Результат: {capital_DEN} has a bridge for {people_DEN}

Но я хочу этот результат: capital_DEN has a bridge for people_DEN

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Шаблон \{?\?\} соответствует необязательному {, ?, а затем } char.

Вы можете использовать

str1 = Regex.Replace(str, "\{(\w+)\?\}", "$1_DEN")

Или, если есть возможность быть больше, чем просто символы слова внутри:

str1 = Regex.Replace(str, "\{([^{}]+)\?\}", "$1_DEN")

См. VB. NET демо онлайн и regex demo . Шаблон соответствует:

  • \{ - { char
  • (\w+) - Группа 1: одно или несколько символов слова
  • [^{}]+ - 1+ символов кроме { и }
  • \?\} - подстрока ?}.

Полный VB. NET Фрагмент кода:

Dim str As String = "{capital?} has a bridge for {people?}"
Dim str1 As String
str1 = Regex.Replace(str, "\{(\w+)\?\}", "$1_DEN")
Console.WriteLine(str1)
' -> capital_DEN has a bridge for people_DEN
0 голосов
/ 29 апреля 2020

Сначала создайте консольное приложение

Module Module1

    Sub Main()
        Console.Title = "Combine"
        Dim a As String = "capital_Den"
        Dim b As String = "people_Mar"
        Dim ResultString As String = a & " has a bridge for " & b
        Console.ForegroundColor = ConsoleColor.Green
        Console.WriteLine(ResultString)
        Console.ReadKey()
    End Sub

End Module
...