Utilitaires de listes
#5
J'ajoute trois procédures:

lremove
Cette procédure sert à retirer un élément d'une liste
tcl
proc lremove {datas needle {option -exact}} {
   if {$option ne "-nocase"} { set option -exact }
   return [lsearch -all -inline -not $option $datas $needle]
}


Code :
% set a {a b c d e f g h i j}
a b c d e f g h i j
% puts [lremove $a e]
a b c d f g h i j

lireplace
Cette procédure remplace un élément par un autre de manière non sensible à la casse
tcl
proc lireplace {datas needle {replacement ""}} {
   if {$needle eq ""} { return $datas }
   set idx [lsearch -nocase $datas $needle]
   if {$idx > -1} {
      return [lreplace $datas $idx $idx $replacement]
   } else {
      return $datas
   }
}


Code :
% set a {a b c d e f g h i j}
a b c d e f g h i j
% puts [::utils::lireplace $a B z]
a z c d e f g h i j

lereplace
Cette dernière procédure est le pendant de la précédente mais de manière sensible (-exact)
tcl
proc lereplace {datas needle {replacement ""}} {
   if {$needle eq ""} { return $datas }
   set idx [lsearch -exact $datas $needle]
   if {$idx > -1} {
      return [lreplace $datas $idx $idx $replacement]
   } else {
      return $datas
   }
}


Code :
% set a {a b c d e f g h i j}
a b c d e f g h i j
% puts [::utils::lereplace $a B z]
a b c d e f g h i j
# b != B
% puts [::utils::lereplace $a b z]
a z c d e f g h i j

Notez que si vous ne passez pas l'argument replacement à lireplace et lereplace, elles agissent comme lremove.
Répondre


Messages dans ce sujet
Utilitaires de listes - par CrazyCat - 30/01/2024, 17:45
RE: Utilitaires de listes - par Amand - 30/01/2024, 21:26
RE: Utilitaires de listes - par CrazyCat - 30/01/2024, 21:56
RE: Utilitaires de listes - par Amand - 30/01/2024, 22:05
RE: Utilitaires de listes - par CrazyCat - 12/03/2024, 16:58
RE: Utilitaires de listes - par CrazyCat - 12/05/2024, 17:42

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté