Stéphane,
Le 29/10/2019 à 22:52, Stéphane Santon a écrit :
Existe-t-il une fonction Basic de traitement de chaine de caractère qui
rend une chaine de caractères conforme aux /noms d'objets/ comme dans
TextTable.Name : supprime les espaces, caractères accentués, ... ?
non, rien de tout prêt dans la bibliothèque d'exécution.
Voici une fonction TitleCase qui va te permettre de démarrer :
8< --------------------------------------------------------
Function TitleCase(ByRef pStr As String) As String
'Converts a string into titlecase.
'eg: "test the o'connors and the mac-addamses" -> "Test The O'Connors
And The Mac-Addamses"
'Input:
'-- pStr: the string to process
'Output: the processed string
Dim l_Str As String 'output buffer
Dim l_StrUC As String 'temporary version with uppercase chars
Dim l_SplitChars As String 'chars where to split the titles
Dim l_arrItems As Variant 'array of title items
Dim l_StrTmp As String 'temporary buffer
Dim l_CurSplit As String 'a splitting character
Dim j As Long
Dim i As Long
If (pStr = "") Then
l_Str = pStr
Else
'set the splitting chars set
l_SplitChars = " '’-" & Chr(160) 'Chr(160) = unbreakable space
'process the input string for each splitting character
l_Str = LCase(pStr)
l_Str = UCase(Left(l_Str, 1)) & Right(l_Str, Len(l_Str) - 1)
For i = 1 to Len(l_SplitChars)
l_CurSplit = Mid(l_SplitChars, i, 1)
l_arrItems = Split(l_Str, l_CurSplit)
If (UBound(l_arrItems) > 0) Then
l_StrTmp = ""
l_Str = ""
For j = 0 to UBound(l_arrItems)
'set 1st char uppercase
l_StrUC = UCase(Left(l_arrItems(j), 1)) & Right(l_arrItems(j),
Len(l_arrItems(j)) - 1)
'add the split char if it is the first
char
If (j > 0) Then
l_StrTmp = l_StrTmp & l_CurSplit
& l_StrUC
Else
l_StrTmp = l_StrTmp & l_StrUC
End If
Next
'update the string to process
l_Str = l_Str & l_StrTmp
End If
Next
End If
TitleCase = l_Str
End Function 'TitleCase
Sub _TitleCase_Test()
Print TitleCase("test the o'connors and the mac-addamses")
End Sub '_TitleCase_Test
----------------------------------------------------- >8
Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
reçoive une copie de votre réponse.
Bien cordialement,
Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
reçoive une copie de votre réponse.
Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux
--
Envoyez un mail à [email protected] pour vous désinscrire
Les archives de la liste sont disponibles à
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy