waarde terugkrijgen via lastindexof, substring

Status
Niet open voor verdere reacties.

hanonymouss

Gebruiker
Lid geworden
7 sep 2011
Berichten
283
Hallo allemaal,

ik probeer een specifieke waarde terug te krijgen, maar het lukt

voorbeeld:
HTML:
{
   "number": "4856236+5",
   "name": "dit wil ik krijgen",
   "letter": "d",
   "end": "nt",
   "link": "http://www.google.be",
  }

dit code gebruik ik nu:

[CPP] Dim voorbeeld As String = textbox1.text

Dim pos As Integer = voorbeeld.IndexOf("name:")
Dim endpos As Integer = voorbeeld.IndexOf(" ", pos)
Dim gets As Integer = endpos - pos


Dim strTitle As String = voorbeeld.Substring(pos, gets)[/CPP]

alvast bedankt
 
Laatst bewerkt:
Het ziet er naar uit dat je een JSON string probeert uit te lezen, je kunt hier de functie JavaScriptSerializer.DeserializeObject voor gebruiken.

Ook kan je het met RegEx oplossen, als volgt:
[cpp]
Dim match As String = System.Text.RegularExpressions.Regex.Matches(content, Chr(34) + "(.*?)" + Chr(34))(3).Value.Replace(Chr(34), "")
[/cpp]
Waar content de string met text (json) is.

Voorbeeld met de JS Serializer:
[cpp]
Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim naamValue = js.DeserializeObject(content)("name")[/cpp]
Wel moet je hiervoor de laatste komma in de json string weghalen, omdat die niet geldig is bij het parsen.
 
Ik heb deze ff in elkaar geflanst:

[CPP] Dim output As String = ""
For Each Str As String In My.Resources.input.Split(vbNewLine)
Dim s As String = Str.Substring(1).TrimStart(" ")
If s.StartsWith("""" & "name" & """") Then
output = s.Substring(9).Remove(s.Substring(9).Length - 2)
End If
Next
Console.WriteLine(output)
Console.ReadKey()[/CPP]

Met 'My.Resources.input' als input gegeven in post #1.
De output wordt: 'dit wil ik krijgen'

[edit]CaptainBri's antwoord is veel efficiënter. Vergeet deze code.[/edit]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan