Member 10103170 Ответов: 2

Извлеките определенные данные из строки.


Любой простой/надежный способ получить значение 'ASPxFormLayout1' из этой строки.
Значение может измениться - в идеале нужен метод извлечения данных между кавычками после 'ID='

Строка есть :
&ЛТ;остальные:ASPxFormLayout идентификатор="ASPxFormLayout1" атрибут runat="сервер" свойстве datasourceid="sqldatasource1 на"&ГТ;

Что я уже пробовал:

Пробовал instr, но не уверен в подстановочных знаках? и даже если бы я мог найти его, я не уверен, как извлечь то, что я хочу. Спасибо.

2 Ответов

Рейтинг:
17

Richard Deeming

Язык Регулярных Выражений - Краткий Справочник | Microsoft Docs[^]

Dim input As String = "<dx:ASPxFormLayout ID=""ASPxFormLayout1"" runat=""server"" DataSourceID=""SqlDataSource1"">"
Dim m As Match = Regex.Match(input, "\bID=""(?<id>[^""]+)""")
Dim id As String = If(m.Success, m.Groups("id").Value, "")
' id === "ASPxFormLayout1"


Рейтинг:
0

OriginalGriff

Если вы имеете в виду "получить идентификационные данные между двойными кавычками", то используйте регулярное выражение:

(?<=ID=").+(?="\s*runat=)
Должны делать это.
Public Dim regex As Regex = New Regex( _
      "(?<=ID="").+(?=""\s*runat=)", _
    RegexOptions.Multiline _
    Or RegexOptions.Singleline _
    Or RegexOptions.CultureInvariant _
    Or RegexOptions.Compiled _
    )

'...
Dim m As Match = regex.Match(InputText)
If m.Success Then
   Dim id as String = m.Value
   ' ...
End If


Richard Deeming

Это работает только в том случае, если runat= сразу же следует удостоверение личности. :)

OriginalGriff

Тогда ваш нуждается в"? "после"+": смех:

Richard Deeming

Только если вы планируете сопоставить пустой идентификатор. Но тернарный оператор уже имеет дело с этим. :)