Gambas-it

Gambas3 => Programmazione => Topic aperto da: dregi - 10 Settembre 2019, 15:59:07

Titolo: vbProperCase
Inserito da: dregi - 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?
Titolo: Re:vbProperCase
Inserito da: Gianluigi - 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
Titolo: Re:vbProperCase
Inserito da: vuott - 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

Titolo: Re:vbProperCase
Inserito da: dregi - 10 Settembre 2019, 22:24:08
Grazie ad entrambi, stavo congetturando di usare mid e un vettore, ma quanto sono lontano!! :-\
Grazie ancora.
Titolo: Re:vbProperCase
Inserito da: vuott - 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...