Autore Topic: vbProperCase  (Letto 668 volte)

Offline dregi

  • Gambero
  • **
  • Post: 85
  • Non possum tuis usque tandem abutere patientiae?
    • Mostra profilo
vbProperCase
« il: 10 Settembre 2019, 15:59:07 »
Con vbProperCase in VB6 si otteneva che ogni prima lettera di una stringa fosse UCASE es. via romano romani 46 diventava Via Romano Romani 46. Esiste in gambas una funzione simile?

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:vbProperCase
« Risposta #1 il: 10 Settembre 2019, 19:21:44 »
Propongo una cosa così:

Codice: [Seleziona]
Private Function gbProperCase(value As String) As String

  Dim ss As String[] = Split(value, " ")

  value = ""
  For Each s As String In ss
    value &= String.UCaseFirst(s) & " "
  Next
  Return RTrim(value)

End
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:vbProperCase
« Risposta #2 il: 10 Settembre 2019, 20:35:08 »
...oppure questa ipotesi:

Codice: [Seleziona]
Public Sub Form_Open()

  Dim bb As Byte[]
  Dim i As Integer
 
  bb = Byte[].FromString("via romano romani 46")
 
  For i = 0 To bb.Max - 1
    If bb[i + 1] \ bb[i] = 3 Then bb[i + 1] = bb[i + 1] - 32
  Next

  Print bb.ToString(0, bb.Count)

End

« Ultima modifica: 10 Settembre 2019, 21:03:23 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline dregi

  • Gambero
  • **
  • Post: 85
  • Non possum tuis usque tandem abutere patientiae?
    • Mostra profilo
Re:vbProperCase
« Risposta #3 il: 10 Settembre 2019, 22:24:08 »
Grazie ad entrambi, stavo congetturando di usare mid e un vettore, ma quanto sono lontano!! :-\
Grazie ancora.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:vbProperCase
« Risposta #4 il: 10 Settembre 2019, 22:59:26 »
stavo congetturando di usare mid
Una prima ipotesi con uso di Mid( ) potrebbe essere questa:
Codice: [Seleziona]
Public Sub Main()

  Dim s As String
  Dim i As Integer
 
  s = "via romano romani 46"
 
  For i = 1 To Len(s)
    If IsSpace(Mid(s, i, 1)) Then Mid(s, i + 1, 1) = String.UCaseFirst(Mid(s, i + 1, 1))
  Next

  Print s

End
ma fa schifo pure a me: tendenzialmente odio le funzioni stringa.


usare mid e un vettore
Non capisco in che modo farli dialogare proficuamente...
« Ultima modifica: 10 Settembre 2019, 23:00:46 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »