Get two snippets of a confusing string

2

* My question is very simple: How do I get the string Argumento1 and the string Argumento2 , separated into two variables in this code of a language I'm doing:

if Argumento1 = Argumento2 (
     --statements;
   );

I just want to get the two variables, without the other text. thank you! ( I prefer the answer in VB )

    
asked by anonymous 12.05.2015 / 00:00

2 answers

2

Using the String.Substring , you can do this:

Dim texto As String = "if Argumento1 = Argumento2 ( --statements; );"

Dim ifIndice As Integer = texto.IndexOf("if")
Dim igualIndice As Integer = texto.IndexOf("=")

Dim ifLen As Integer = Len("if") + 1

Dim argumento1 As String = texto.Substring(ifIndice + ifLen, igualIndice - ifLen)
Dim argumento2 As String = texto.Substring(igualIndice + 2, texto.IndexOf(" (") - igualIndice - 1)

Console.WriteLine(String.Format("Arg1: {0}, Arg2: {1}", argumento1, argumento2))
Console.ReadLine()

Exemplo

Another way using regular expressions :

Imports System.Text.RegularExpressions
....
...

Dim texto As String = "if Argumento1 = Argumento2 ( --statements; );"
Dim argumento1 As String = "", argumento2 As String = ""

Dim match As Match = Regex.Match(texto, "if\s+([\w]+)\s+=\s+([\w]+)\s+\(", RegexOptions.IgnoreCase)
If match.Success Then
     argumento1 = match.Groups(1).Value
     argumento2 = match.Groups(2).Value
End If
Console.WriteLine(String.Format("Arg1: {0}, Arg2: {1}", argumento1, argumento2))
Console.ReadLine()

Exemplo

    
12.05.2015 / 00:32
2

There is also a very fine function called Split

It would look something like this:

Dim meuCodigo As String = "if Argumento1 = Argumento2 (--statements;);" 'Esse texto representa o seu código'

meuCodigo = meuCodigo.Replace("if ", "") 'Aqui nós substituimos uma parte do seu código que você não quer...'
meuCodigo = meuCodigo.Replace(" (--statements;);", "") 'Aqui substituimos outra parte também...'

Dim meuVetor() As String 'Aqui criamos uma variável que ira receber uma String e separar em 2 por um limitador'
meuVetor = Split(meuCodigo, " = ") 'Pronto, já separamos em 2!'

MsgBox("Argumento1: " & meuVetor(0) & vbNewLine & "Argumento2: " & meuVetor(1)) 'Aqui só exibimos uma mensagem do resultado'
    
17.05.2015 / 05:11