Fulvio75 Well-Known Member Licensed User Longtime User Dec 4, 2023 #1 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 non dovrebbe essere: components(0)=1 components(1)=2 components(2)=3 components(3)=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 non dovrebbe essere: components(0)=1 components(1)=2 components(2)=3 components(3)=4
Filippo Expert Licensed User Longtime User Dec 4, 2023 #2 Fulvio75 said: 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 non dovrebbe essere: components(0)=1 components(1)=2 components(2)=3 components(3)=4 Click to expand... 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 Log: components-0=1 components-1=2 components-2=3 components-3=4 Click to expand...
Fulvio75 said: 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 non dovrebbe essere: components(0)=1 components(1)=2 components(2)=3 components(3)=4 Click to expand... 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 Log: components-0=1 components-1=2 components-2=3 components-3=4 Click to expand...
LucaMs Expert Licensed User Longtime User Dec 4, 2023 #4 MarcoRome said: ?? View attachment 148323 Click to expand... E' un bug. Con B4A il risultato è quello indicato da Fulvio, con B4J è quello di Marco. https://www.b4x.com/android/forum/threads/regex-b4a-b4j.157797/ Last edited: Dec 4, 2023
MarcoRome said: ?? View attachment 148323 Click to expand... E' un bug. Con B4A il risultato è quello indicato da Fulvio, con B4J è quello di Marco. https://www.b4x.com/android/forum/threads/regex-b4a-b4j.157797/
Filippo Expert Licensed User Longtime User Dec 4, 2023 #5 LucaMs said: E' un bug. Con B4A il risultato è quello indicato da Fulvio, con B4J è quello di Marco. https://www.b4x.com/android/forum/threads/regex-b4a-b4j.157797/ Click to expand... Non può essere un Bug! Sono sole le differenza tra le 3 piattaforme.
LucaMs said: E' un bug. Con B4A il risultato è quello indicato da Fulvio, con B4J è quello di Marco. https://www.b4x.com/android/forum/threads/regex-b4a-b4j.157797/ Click to expand... Non può essere un Bug! Sono sole le differenza tra le 3 piattaforme.
MarcoRome Expert Licensed User Longtime User Dec 4, 2023 #6 LucaMs said: E' un bug. Con B4A il risultato è quello indicato da Fulvio, con B4J è quello di Marco. https://www.b4x.com/android/forum/threads/regex-b4a-b4j.157797/ Click to expand...
LucaMs said: E' un bug. Con B4A il risultato è quello indicato da Fulvio, con B4J è quello di Marco. https://www.b4x.com/android/forum/threads/regex-b4a-b4j.157797/ Click to expand...
LucaMs Expert Licensed User Longtime User Dec 4, 2023 #7 Eh, ma hai visto la mia immagine, "di là", no?!
MarcoRome Expert Licensed User Longtime User Dec 4, 2023 #8 LucaMs said: Eh, ma hai visto la mia immagine, "di là", no?! Click to expand... e si, ho visto. Ho provato anche a scaricare il tuo esempio, il risultato è sempre corretto.
LucaMs said: Eh, ma hai visto la mia immagine, "di là", no?! Click to expand... e si, ho visto. Ho provato anche a scaricare il tuo esempio, il risultato è sempre corretto.
LucaMs Expert Licensed User Longtime User Dec 4, 2023 #9 MarcoRome said: e si, ho visto. Ho provato anche a scaricare il tuo esempio, il risultato è sempre corretto. Click to expand... Per fortuna il problema lo ha rilevato Fulvio, altrimenti penserei che il mio PC sia ammattito più del suo padrone ?
MarcoRome said: e si, ho visto. Ho provato anche a scaricare il tuo esempio, il risultato è sempre corretto. Click to expand... Per fortuna il problema lo ha rilevato Fulvio, altrimenti penserei che il mio PC sia ammattito più del suo padrone ?
Sagenut Expert Licensed User Longtime User Dec 4, 2023 #10 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.
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.
LucaMs Expert Licensed User Longtime User Dec 4, 2023 #11 Fulvio75 said: 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 non dovrebbe essere: components(0)=1 components(1)=2 components(2)=3 components(3)=4 Click to expand... https://www.b4x.com/android/forum/threads/regex-b4a-b4j.157797/post-968727
Fulvio75 said: 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 non dovrebbe essere: components(0)=1 components(1)=2 components(2)=3 components(3)=4 Click to expand... https://www.b4x.com/android/forum/threads/regex-b4a-b4j.157797/post-968727
MarcoRome Expert Licensed User Longtime User Dec 4, 2023 #12 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
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
MarcoRome Expert Licensed User Longtime User Dec 4, 2023 #13 Risolto il mistero. Come detto da Oliver Regex B4A & B4J Dim components() As String components = Regex.Split("", "1234") B4A: 5 strings - "" "1" "2" "3" "4" B4J: 4 strings - "1" "2" "3" "4" https://www.b4x.com/android/forum/threads/regex-split.157791/ www.b4x.com Click to expand... "...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
Risolto il mistero. Come detto da Oliver Regex B4A & B4J Dim components() As String components = Regex.Split("", "1234") B4A: 5 strings - "" "1" "2" "3" "4" B4J: 4 strings - "1" "2" "3" "4" https://www.b4x.com/android/forum/threads/regex-split.157791/ www.b4x.com Click to expand... "...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
LucaMs Expert Licensed User Longtime User Dec 4, 2023 #14 MarcoRome said: Morale della favola, per questo caso particolare forse al posto tuo utilizzerei il seguente codice che funziona con tutte le Versioni: Click to expand... Anche quello che mi ha suggerito ChatGPT funziona; sostituire il pattern della Regex in questo modo: B4X: components = Regex.Split("(?<=.)", "1234") Notare che c'è uno spazio dopo le prime virgolette.
MarcoRome said: Morale della favola, per questo caso particolare forse al posto tuo utilizzerei il seguente codice che funziona con tutte le Versioni: Click to expand... Anche quello che mi ha suggerito ChatGPT funziona; sostituire il pattern della Regex in questo modo: B4X: components = Regex.Split("(?<=.)", "1234") Notare che c'è uno spazio dopo le prime virgolette.
MarcoRome Expert Licensed User Longtime User Dec 4, 2023 #15 Per chi è curioso: Behavior Change in String.split for Java 8 Java 8 now ignores 1st null element. leewc.com Click to expand...
Per chi è curioso: Behavior Change in String.split for Java 8 Java 8 now ignores 1st null element. leewc.com Click to expand...
LucaMs Expert Licensed User Longtime User Dec 4, 2023 #16 MarcoRome said: Per chi è curioso: Click to expand... 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...!
MarcoRome said: Per chi è curioso: Click to expand... 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...!
MarcoRome Expert Licensed User Longtime User Dec 4, 2023 #17 LucaMs said: 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...! Click to expand... è già...
LucaMs said: 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...! Click to expand... è già...
Fulvio75 Well-Known Member Licensed User Longtime User Dec 6, 2023 #18 Ho risolto, conto i caratteri della stringa: strMatrice ha sempre 6 elementi Dim str As String = "........" Dim strMatrice(6) As String For i = 0 To (str.Length-1) strMatrice(i) =str.SubString2(i,i+1) Next
Ho risolto, conto i caratteri della stringa: strMatrice ha sempre 6 elementi Dim str As String = "........" Dim strMatrice(6) As String For i = 0 To (str.Length-1) strMatrice(i) =str.SubString2(i,i+1) Next
Fulvio75 Well-Known Member Licensed User Longtime User Dec 6, 2023 #19 Come faccio a sapere se il testo contenuto un una label si visualizza tutto oppure no in base all'altezza impostata della label?
Come faccio a sapere se il testo contenuto un una label si visualizza tutto oppure no in base all'altezza impostata della label?
Filippo Expert Licensed User Longtime User Dec 6, 2023 #20 Fulvio75 said: Come faccio a sapere se il testo contenuto un una label si visualizza tutto oppure no in base all'altezza impostata della label? Click to expand... Calcola l'altezza del testo e confrontala con l'altezza dell'etichetta.
Fulvio75 said: Come faccio a sapere se il testo contenuto un una label si visualizza tutto oppure no in base all'altezza impostata della label? Click to expand... Calcola l'altezza del testo e confrontala con l'altezza dell'etichetta.