Лучший способ извлечь числа из строки - PullRequest
1 голос
/ 14 февраля 2020

Я пытался изменить строку, подобную этой, {X=5, Y=9} на строку, подобную этой (5, 9), так как она будет использоваться в качестве экранной координаты.

Я наконец-то придумал это код:

Dim str As String = String.Empty
Dim regex As Regex = New Regex("\d+")
Dim m As Match = regex.Match("{X=9")
If m.Success Then str = m.Value
Dim s As Match = regex.Match("Y=5}")
If s.Success Then str = "(" & str & ", " & s.Value & ")"
MsgBox(str)

, который работает, но наверняка должен быть лучший способ сделать это (я не знаком с Regex).

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

1 Ответ

0 голосов
/ 27 февраля 2020

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

Dim result As String = Regex.Replace(input, ".*?=(\d+).*?=(\d+).*", "($1, $2)")

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

  • .*? - любые 0+ символов, кроме символов новой строки, как можно меньше
  • = - знак равенства
  • (\d+) - Группа 1: одна или несколько цифр
  • .*?= - любые 0+ символов, кроме символов новой строки, как можно меньше, а затем = char
  • (\d+) - Группа 2: одна или несколько цифр
  • .* - любые 0+ символов, кроме символов новой строки, как можно больше

$1 и $2 в шаблоне замены являются обратными ссылками замены, которые указывают на значения, хранящиеся в буфере памяти групп 1 и 2.

...