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 à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.