Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[PYTANIE] Czytanie wybranych znaków


Rekomendowane odpowiedzi

Opublikowano

Witam, mam string dajmy "sciana=5, biurko=120, lampa=200 | okno=20, szyba=143" potrzebuje odczytać te dwie ostatnie wartosci okno i szyba, odrazu mowie ze te wartosci moga miec wartosc 1000 jak i 100000 wiec wydaje mi sie ze StringReader odpada, jakieś inne propozycje ? obie liczby sa niewiadome wiec Replace chyba tez odpada, nie wiem czy jest cos takiego zeby zwracało wartośc od jakiegoś znaku np "<" do ">" było by to najlepsze i dalej bym sobie poradzil. :D

 

Czekam na pomoc, z gory dzieki.

Pomocnik
Opublikowano

Najpierw namierz początek danej wartości w tym celu użyj funkcji instr().

http://www.homeandlearn.co.uk/net/nets7p4.html

Jak masz już początek dolicz do niego len() wartości jaką szukasz razem ze znakiem "=".

Potem namierz koniec wartości do wczytania, zrobisz to poprzez wyszukanie pustego miejsca " " lub znaku następnej lini vbnewline (czy coś takiego).

Kiedy juz namierzysz pozycję końca wartości użyj Val() na wczytanej wartości i wuala !. W praktyce:

 

Dim String1 as string

Dim Pos1 as integer

Dim Pos2 as integer

Dim Value1 as double

String1= "a=10 b=20 c=60"

 

Pos1= instr( "a", String1)

Pos1= Pos1+ len(a) +1 ' znak równa się

Pos2= instr(Pos1," ", String1)

if Pos2 >instr(Pos1,vbnewline, String1) then ' teoretycznie val() zlikwidowało by problem wczytania znaku nowej lini ale bądźmy porządni.

Pos2 =instr(Pos1,vbnewline, String1)

end if

Value1= Val(mid( String1, Pos1, Pos2 - Pos1))

 

msgbox Cstr(Value1)

Opublikowano

Imports System.Text.RegularExpressions

 

Public Class Form1

 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Dim wartosci As String = "sciana=5, biurko=120, lampa=200 | okno=20, szyba=143 "

Dim sciana As Integer = Integer.Parse(Regex.Match(wartosci, "sciana=(.*?)(,| )", RegexOptions.IgnoreCase).Groups(1).Value)

Dim biurko As Integer = Integer.Parse(Regex.Match(wartosci, "biurko=(.*?)(,| )", RegexOptions.IgnoreCase).Groups(1).Value)

Dim lampa As Integer = Integer.Parse(Regex.Match(wartosci, "lampa=(.*?)(,| )", RegexOptions.IgnoreCase).Groups(1).Value)

Dim okno As Integer = Integer.Parse(Regex.Match(wartosci, "okno=(.*?)(,| )", RegexOptions.IgnoreCase).Groups(1).Value)

Dim szyba As Integer = Integer.Parse(Regex.Match(wartosci, "szyba=(.*?)(,| )", RegexOptions.IgnoreCase).Groups(1).Value)

MessageBox.Show(String.Format("Ściana: {1}{0}Biurko: {2}{0}Lampa: {3}{0}Okno: {4}{0}Szyba: {5}", vbNewLine, sciana, biurko, lampa, okno, szyba))

End Sub

End Class

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...