Get two snippets of a confusing string

Asked

Viewed 65 times

2

*It’s very simple my question: How do I get the string Argumento1 and the string Argumento2, separated into two variables in this code of a language that I’m doing:

if Argumento1 = Argumento2 (
     --statements;
   );

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

2 answers

2

There is also a very fine function called Split

Would 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'

2


Using the method String.Substring, you can do it like 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

  • 1

    Whoa, whoa, thanks a lot ^-^.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.