Ho notato un probabile "malfunzionamento" di Regex.Split, ovvero:
Dim components() As String
components = Regex.Split("", "1234")
se non metto il pattern la numerazione di components ha 5 indici e il primo che è lo zero è vuoto.
components(0)=vuoto
components(1)=1
components(2)=2
components(3)=3
components(4)=4
Ho notato un probabile "malfunzionamento" di Regex.Split, ovvero:
Dim components() As String
components = Regex.Split("", "1234")
se non metto il pattern la numerazione di components ha 5 indici e il primo che è lo zero è vuoto.
components(0)=vuoto
components(1)=1
components(2)=2
components(3)=3
components(4)=4
Se vuoi un risultato del genere, allora dovresti scrivere così:
B4X:
Dim components() As String
components = Regex.Split(",", "1,2,3,4")
For i = 0 To components.Length - 1
Log("components-" & i & "=" & components(i))
Next
Forse è più una questione di versione Android del telefono e/o di una strana implementazione da parte di alcuni produttori.
E' comunque una informazione utile, perchè potrebbe portare a bug segnalati da utenti/clienti che non si riescono a replicare.
Io ottengo 4 elementi sia sul mio cellulare che sull'emulatore su cui ho fatto la prova.
Ho notato un probabile "malfunzionamento" di Regex.Split, ovvero:
Dim components() As String
components = Regex.Split("", "1234")
se non metto il pattern la numerazione di components ha 5 indici e il primo che è lo zero è vuoto.
components(0)=vuoto
components(1)=1
components(2)=2
components(3)=3
components(4)=4
e si, stesso codice, comportamenti differenti.
Dipende dalla versione android.
su un dispositivo reale con:
Android 8 ho i 5 valori ( errato )
Android 11 è corretto
Android 13 è corretto
"...Il comportamento quando si ha a che fare con un modello di stringa vuoto è cambiato tra Java 7 e Java 8. A seconda della versione di Android, potresti avere a che fare con Java 6, 7 o 8. Questo non ha nulla a che fare con il JDK che usi in B4A per generare il tuo APK, ma con Java implementato in Android...."
"...Questo è il comportamento previsto per String#split per Java versione fino alla 7 ed è stato modificato in Java 8..."
Morale della favola, per questo caso particolare forse al posto tuo utilizzerei il seguente codice che funziona con tutte le Versioni:
B4X:
Dim input As String
input = "1234"
Dim components(input.Length) As String
For i = 0 To components.Length - 1
components(i) = input.CharAt(i)
Log(components(i))
Next
Più che curioso, sono preoccupato. Come ha giustamente notato @Sagenut, pensa se altri problemi simili esistano e mandino in crash la tua app installata dagli utenti; prima che se ne venga a capo...!
Più che curioso, sono preoccupato. Come ha giustamente notato @Sagenut, pensa se altri problemi simili esistano e mandino in crash la tua app installata dagli utenti; prima che se ne venga a capo...!