Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Hello,
voici un script qui pourrait interesser certaines personnes.
Il s'agit de reconvertir des mots, adresses, en minuscule ou majuscule sans les accents !
On s'en sert pour les traitements batchs financiers...
Version PB7.
Tout d'abord, importer cette fonction globale.
$PBExportHeader$f_caractereaccentue.srf global type f_caractereaccentue from function_object end type forward prototypes global function string f_caractereaccentue (string as_mot, string as_type) end prototypes global function string f_caractereaccentue (string as_mot, string as_type);/*******************************************************************************/ /* Nom : Permet de reconvertir en minuscule-majuscule sans les accents */ /*******************************************************************************/ // SKA 2004 string ls_mot string ls_caractereactuel string ls_caracterearemplace long ll_len , ll_cpt, ll_cptequivalent boolean lb_caractereautre string ls_caracterenormale string ls_caractere[] string ls_equivalent[] ls_caractere[1] = 'ÀÁÂÃÄÅÆ' ls_caractere[2] = 'Ç' ls_caractere[3] = 'ÈÉÊË' ls_caractere[4] = 'ÌÍÎÏ' ls_caractere[5] = 'Ñ' ls_caractere[6] = 'ñ' ls_caractere[7] = 'ÒÓÔÕÖ' ls_caractere[8] = 'ÙÚÛÜ' ls_caractere[9] = 'Ý' ls_caractere[10] = 'àáâãäåæ' ls_caractere[11] = 'ç' ls_caractere[12] = 'èéêë' ls_caractere[13] = 'ìíîï' ls_caractere[14] = 'ðòóôõö' ls_caractere[15] = 'ùúûü' ls_caractere[16] = 'ý' ls_equivalent[1] = 'A' ls_equivalent[2] = 'C' ls_equivalent[3] = 'E' ls_equivalent[4] = 'I' ls_equivalent[5] = 'N' ls_equivalent[6] = 'n' ls_equivalent[7] = 'O' ls_equivalent[8] = 'U' ls_equivalent[9] = 'Y' ls_equivalent[10] = 'a' ls_equivalent[11] = 'c' ls_equivalent[12] = 'e' ls_equivalent[13] = 'i' ls_equivalent[14] = 'o' ls_equivalent[15] = 'u' ls_equivalent[16] = 'y' ls_mot = as_mot ll_len = len(ls_mot) choose case as_type case 'U','UPPER' // mode majuscule ls_mot = upper(ls_mot) ls_caracterenormale = "^[A-Z]$" case else // mode minuscule ls_mot = lower(ls_mot) ls_caracterenormale = "^[a-z]$" end choose lb_caractereautre = true for ll_cpt = 1 to ll_len ls_caractereactuel = mid(ls_mot,ll_cpt,1) ls_caracterearemplace = '' lb_caractereautre = Match(ls_caractereactuel, ls_caracterenormale) if lb_caractereautre = false then for ll_cptequivalent = 1 to upperbound(ls_caractere[]) if pos(ls_caractere[ll_cptequivalent],ls_caractereactuel) > 0 then ls_caracterearemplace = ls_equivalent[ll_cptequivalent] ls_mot = Replace(ls_mot, ll_cpt, 1, ls_caracterearemplace) exit end if next end if next return ls_mot end function
et , tester ce bout de script :
string ls_mot1 string ls_mot2 ls_mot1 = 'tête à pépé!' ls_mot2 = f_caractereaccentue(ls_mot1,'U') // U ou UPPER en parametre pour la reconvertion en majuscule messagebox(ls_mot1,ls_mot2) ls_mot1 = 'TÊTE À PÉPÉ!' ls_mot2 = f_caractereaccentue(ls_mot1,'L') // L ou autres que 'U','UPPER' pour la reconvertion en minuscule messagebox(ls_mot1,ls_mot2)
Hors ligne
Pages: 1