Da una stringa così:
X100Y50
come faccio a ricavare i valori di x e y singolarmente?
Da considerare che potrebbero esserci anche stringhe scritte così:
N100X100Y50
La lunghezza di una stringa o la complessità della composizione dei caratteri non è un problema.
Qui tu forse per "
valori" vuoi intendere i numeri che seguono le due lettere " X " e " Y "....
allora, se le
cifre che compongono i due valori sono note (nel senso che se già sai che la X ha un valore che non supera le centinaia, e la Y un valore che non supera le decine, potresti fare così:
Public Sub Button1_Click()
Dim a As Integer ' porremo il primo risultato nella variabile " a "
Dim b As Integer ' porremo il secondo risultato nella variabile " b "
a = Val(Mid$("X100Y50", 2, 3)) ' raccoglie "tre" caratteri cominciando dal 2° a sinistra.... cioè " 100 ", e converte il risultato in un numero
b = Val(Right$("X100Y50", 2)) ' raccoglie i primi "due" caratteri a destra della stringa.... cioè " 50 ", e converte il risultato in un numero
Print a, b ' va a mostrare in console i due risultati: 100 e 50
End
La conversione da Stringa ad Integer non è obbligatoria: dipende ovviamente dal successivo uso che devi fare di ciascun risultato.
Quella funzione Mid$ puoi leggerla, volendo, anche così: "Della stringa "X100Y50", partendo dal 2° carattere a sinistra, prendo 3 caratteri !" Se invece i valori possono essere composti da
qualunque numero di cifre, allora il discorso cambia !
Provo ad esporre
un metodo di soluzione fra
altri possibili.
Quello che senz'altro è noto, è che il primo carattere (a partire da sinistra) della stringa è certamente la lettera "X", la quale quindi non entrerà a far parte del
suo valore. La prima cifra utile sarà certamente il secondo carattere della stringa... ma non sappiamo se il valore è rappresentato dalla sola cifra delle unità, oppure se v'è anche un'altra cifra (quella delle decine), ed un'altra ancora (quella delle centinaia), e così via.
Procediamo così:
Public Sub Button1_Click()
Dim a As String[]
' tronco la stringa in due sotto-stringhe, ed elimino la "Y" che utilmente mi fa anche da "separatrice" fra i due valori:
a = Split("X100Y50", "Y")
' A questo punto, la prima sotto-stringa è contenuta nella variabile stringa[]: a[0], mentre la seconda sotto-stringa in: a[1].
' Della prima sotto-stringa (contenuta nella variabile a[0]) prendo un numero di caratteri pari alla totale lunghezza della sotto-stringa medesima
' (pongo genericamente la "totale" lunghezza della sotto-stringa, perché io non conosco quanto è lunga, cioè di quante cifre è composta), ma....
' ...ma in vero non prendo proprio tutti i caratteri, perché parto dal 2° carattere a sinistra (lo faccio per escludere la "X");
' e mostro il risultato in console:
Print "X = "; Mid$(a[0], 2, Len(a[0]))
' mostro, infine, il risultato in console della seconda sotto-stringa, già priva della "Y":
Print "Y = "; a[1]
End