12/03/2024, 16:58
J'ajoute trois procédures:
lremove
Cette procédure sert à retirer un élément d'une liste
lireplace
Cette procédure remplace un élément par un autre de manière non sensible à la casse
lereplace
Cette dernière procédure est le pendant de la précédente mais de manière sensible (-exact)
Notez que si vous ne passez pas l'argument
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.