Date: prev next · Thread: first prev next last
2019 Archives by date, by thread · List index


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.