Newsgroup: it.comp.lang.visual-basic
Titolo: Replace VB 2005

Devo mettere la prima lettera di determinate parole in maiuscolo, ma
come?
Ho pensato di fare così:
Testo = Testo.Replace("daniele", "Daniele")
Ma funziona solo se l'utente scrive "daniele" tutto minuscolo.. a me
servirebbe, invece, che anche se l'utente scrivesse "dAnielE" venisse
cambiato ugualmente.
Grazie, Daniele

 Testo = Testo.Replace("daniele", "Daniele")
Fai cosě:
Function NomePro(ByVal Testo As String) As String
NomePro = StrConv(Testo, vbProperCase)
End Function
-- 
ŠGulp
----
Forse mi sono perso qualcosa.

 Forse mi sono perso qualcosa.
ma questa funzione mi converte tutto?
A me servirebbe convertire solo alcune parole
ciao

 A me servirebbe convertire solo alcune parole
Spieghi il problema completo?
Ciao 

Fabio ha scritto:

Esempio:
Dim Testo as String = "ciao io sono daniele, e te?"        oppure
Dim Testo as String = "ciao io sono DANIELE, e te?"    oppure
Dim Testo as String = "ciao io sono DaNiElE, e te?"     oppure ........
io voglio che il testo <daniele>, indifferentemente se è scritto
maiuscolo, minuscolo, o un po' maiuscolo e un po' minuscolo ecc., venga
sostituito con <Daniele>, cioè con la prima lettera maiuscola e le
altre minuscole
grazie
ciao

altre minuscole
conTolower la metti tutta minuscola
poi 
prendi solo il primo carattere
(lo individui in molti modi, es:    left(...,1)  )
e lo metti Toupper
magari nel net c'è anche una funzione ad hoc,
ma non la so....

 ha scritto nel messaggio 
news:2h5dl29o2n264p30p...@4ax.com...

Ci sono le regular expression, ma io ancora non ho capito come fa a decidere 
quali sono le parole da trattare.
Ciao 

 quali sono le parole da trattare.
Const Parole As String = "Prova\\Daniele\\Altra parola\\Altro..."
Dim Matrice() As String = Split(Parole, "\\")

 le altre minuscole
Come ti hanno già detto devi trovare la posizione di "daniele" nella 
stringa.
Puoi usare cose come Split, Like, Mid ecc... oppure le regex, o ancora 
convertendo il tutto in un array di caratteri.
Una volta trovata la posizione modifichi la sottostringa.
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site: 
http://www.thetotalsite.it
My Blog: 
http://blog.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
Se un circuito funziona al primo tentativo è perchè il problema è molto
più nascosto e subdolo di quanto tu possa pensare...
E apparirà nel momento in cui farà il massimo danno 

 Dim Matrice() As String = Split(Parole, "\\")
Ah, ok.
Il problema č che la string.Replace() non č case insensitive.
La soluzione piů comoda (ma secondo me errata) č usare la 
Microsoft.VisualBasic.Replace() che puň essere case insensitive.
Un'altra soluzione potrebbe essere spulciare tra il codice della 
Microsoft.VisualBasic.Replace() tramite Reflector e riscrivertela.
Anche questo non č il massimo perchč alla fine scopri l'acqua calda...
Comunque:
Const Parole As String = "Prova\\Daniele\\Altra parola\\Altro..."
Dim Matrice() As String = Parole.Split(New String() {"\\"}, 
StringSplitOptions.None)
Dim Testo As String = "ciao io sono daniele, e te?"
    For Each s As String In Matrice
    Testo = MyReplace(Testo, s, s, Text.Length)
Next
Private Shared Function MyReplace(ByVal Expression As String, ByVal Find As 
String, ByVal Replacement As String, ByVal Count As Integer) As String
    Dim options1 As Globalization.CompareOptions
    Dim info1 As Globalization.CompareInfo
    Dim num5 As Integer
    Dim num1 As Integer = Expression.Length
    Dim num2 As Integer = Find.Length
    Dim builder1 As New System.Text.StringBuilder(num1)
    info1 = 
System.Threading.Thread.CurrentThread.CurrentCulture.CompareInfo()
    options1 = (Globalization.CompareOptions.IgnoreWidth Or 
(Globalization.CompareOptions.IgnoreKanaType Or 
Globalization.CompareOptions.IgnoreCase))
    Do While (num5 < num1)
        Dim num4 As Integer
        If (num4 = Count) Then
            builder1.Append(Expression.Substring(num5))
            Exit Do
        End If
        Dim num3 As Integer = info1.IndexOf(Expression, Find, num5, 
options1)
        If (num3 < 0) Then
            builder1.Append(Expression.Substring(num5))
            Exit Do
        End If
        builder1.Append(Expression.Substring(num5, (num3 - num5)))
        builder1.Append(Replacement)
        num4 += 1
        num5 = (num3 + num2)
    Loop
    Return builder1.ToString
End Function
Ciao 

 Anche questo non è il massimo perchè alla fine scopri l'acqua calda...

Grazie!!!
Ma volevo sapere una cosa: perchè giudicheresti sbagliato questo?
Microsoft.VisualBasic.Replace()
ciao e grazie

 Microsoft.VisualBasic.Replace()
Probabilmente perché molti "puristi" ritengono che in .NET non vadano 
utilizzate le classi di retrocompatibilità tipiche di VB.
Non hanno un aspetto molto OOP, e non trovano corrispondenze in altri 
linguaggi .NET.
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

 Anche questo non è il massimo perchè alla fine scopri l'acqua calda...
Corrado Cavalli qualche tempo fa postò questa, credo possa servire:
Public Function ToTitleCase(ByVal text As String) As String
  Return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text)
End Function
Bye, G. 

 End Function
Eccola dov'era!
Ma non era questo che chiedeva. 


Però risponde all'OQ dell'OP :-P.
Bye, G.