nouvelles fonctions str*
This commit is contained in:
parent
9ffb5af972
commit
f0edff697b
|
@ -1 +1 @@
|
||||||
003000002
|
003001000
|
||||||
|
|
|
@ -206,7 +206,7 @@ function first_char() {
|
||||||
}
|
}
|
||||||
function last_char() {
|
function last_char() {
|
||||||
# retourner le dernier caractère de la chaine $1
|
# retourner le dernier caractère de la chaine $1
|
||||||
rawecho "${1:$((-1)):1}"
|
rawecho "${1: -1:1}"
|
||||||
}
|
}
|
||||||
function first_chars() {
|
function first_chars() {
|
||||||
# retourner tous les caractères de la chaine $1, excepté le dernier
|
# retourner tous les caractères de la chaine $1, excepté le dernier
|
||||||
|
|
|
@ -7,7 +7,31 @@ urequire base.string
|
||||||
if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
|
if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
|
||||||
if uprovided base.string; then
|
if uprovided base.string; then
|
||||||
function strlower() { tr A-Z a-z <<<"$*"; }
|
function strlower() { tr A-Z a-z <<<"$*"; }
|
||||||
|
function strlower1() {
|
||||||
|
local str="$*"
|
||||||
|
local h="${str:0:1}" r="${str:1}"
|
||||||
|
echo "$(tr A-Z a-z <<<"$h")$r"
|
||||||
|
}
|
||||||
|
function strlowers() {
|
||||||
|
local -a vs; local v
|
||||||
|
for v in "$@"; do
|
||||||
|
vs=("${vs[@]}" "$(strlower1 "$v")")
|
||||||
|
done
|
||||||
|
echo "${vs[*]}"
|
||||||
|
}
|
||||||
function strupper() { tr a-z A-Z <<<"$*"; }
|
function strupper() { tr a-z A-Z <<<"$*"; }
|
||||||
|
function strupper1() {
|
||||||
|
local str="$*"
|
||||||
|
local h="${str:0:1}" r="${str:1}"
|
||||||
|
echo "$(tr a-z A-Z <<<"$h")$r"
|
||||||
|
}
|
||||||
|
function struppers() {
|
||||||
|
local -a vs; local v
|
||||||
|
for v in "$@"; do
|
||||||
|
vs=("${vs[@]}" "$(strupper1 "$v")")
|
||||||
|
done
|
||||||
|
echo "${vs[*]}"
|
||||||
|
}
|
||||||
function is_yes() {
|
function is_yes() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
||||||
|
|
|
@ -1,16 +1,119 @@
|
||||||
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
## Fonctions de base: gestion des valeurs scalaires
|
## Fonctions de base: gestion des valeurs scalaires
|
||||||
##@cooked nocomments
|
##@cooked nocomments
|
||||||
|
# Note: contient du code spécifique à bash 4. Le module base.compat réimplémente
|
||||||
|
# les fonctions concernées pour les rendre compatible avec bash >= 2.x
|
||||||
uprovide base.string
|
uprovide base.string
|
||||||
urequire base.core
|
urequire base.core
|
||||||
|
|
||||||
|
function straddp() {
|
||||||
|
# ajouter le préfixe $1 à $2*
|
||||||
|
local p="$1"; shift
|
||||||
|
echo "$p$*"
|
||||||
|
}
|
||||||
|
function strdelp() {
|
||||||
|
# enlever le préfixe $1 à $2*
|
||||||
|
local p="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str#$p}"
|
||||||
|
}
|
||||||
|
function strdelp2() {
|
||||||
|
# enlever le préfixe $1 le plus long à $2*
|
||||||
|
local p="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str##$p}"
|
||||||
|
}
|
||||||
|
function stradds() {
|
||||||
|
# ajouter le suffixe $1 à $2*
|
||||||
|
local s="$1"; shift
|
||||||
|
echo "$*$s"
|
||||||
|
}
|
||||||
|
function strdels() {
|
||||||
|
# enlever le suffixe $1 à $2*
|
||||||
|
local s="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str%$s}"
|
||||||
|
}
|
||||||
|
function strdels2() {
|
||||||
|
# enlever le suffixe le plus long $1 à $2*
|
||||||
|
local s="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str%%$s}"
|
||||||
|
}
|
||||||
function strlower() {
|
function strlower() {
|
||||||
# afficher en minuscule la valeur $1..*
|
# afficher en minuscule la valeur $*
|
||||||
echo ${*,,}
|
local str="$*"
|
||||||
|
echo "${str,,}"
|
||||||
|
}
|
||||||
|
function strlower1() {
|
||||||
|
# afficher la valeur $* après avoir converti la première lettre en minuscule
|
||||||
|
local str="$*"
|
||||||
|
echo "${str,}"
|
||||||
|
}
|
||||||
|
function strlowers() {
|
||||||
|
# afficher les valeurs $1..* après avoir converti leur première lettre en
|
||||||
|
# minuscule
|
||||||
|
local str="$*"
|
||||||
|
echo "${*,}"
|
||||||
}
|
}
|
||||||
function strupper() {
|
function strupper() {
|
||||||
# afficher en majuscule la valeur $1..*
|
# afficher en majuscule la valeur $*
|
||||||
echo ${*^^}
|
local str="$*"
|
||||||
|
echo "${str^^}"
|
||||||
|
}
|
||||||
|
function strupper1() {
|
||||||
|
# afficher la valeur $* après avoir converti la première lettre en majuscule
|
||||||
|
local str="$*"
|
||||||
|
echo "${str^}"
|
||||||
|
}
|
||||||
|
function struppers() {
|
||||||
|
# afficher les valeurs $1..* après avoir converti leur première lettre en
|
||||||
|
# majuscule
|
||||||
|
echo "${*^}"
|
||||||
|
}
|
||||||
|
function strmid() {
|
||||||
|
# Afficher la plage $1 de la valeur $2*. La plage peut être d'une des formes
|
||||||
|
# 'start', '[start]:length'. Si start est négatif, le compte est effectué à
|
||||||
|
# partir de la fin de la chaine. Si length est négatif, il est rajouté à la
|
||||||
|
# longueur de la chaine à partir de start
|
||||||
|
local range="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
if [[ "$range" == *:-* ]]; then
|
||||||
|
local max=${#str}
|
||||||
|
[ $max -eq 0 ] && return
|
||||||
|
local start="${range%%:*}"
|
||||||
|
[ -n "$start" ] || start=0
|
||||||
|
while [ "$start" -lt 0 ]; do
|
||||||
|
start=$(($max$start))
|
||||||
|
done
|
||||||
|
max=$(($max-$start))
|
||||||
|
local length="${range#*:}"
|
||||||
|
while [ "$length" -lt 0 ]; do
|
||||||
|
length=$(($max$length))
|
||||||
|
done
|
||||||
|
range="$start:$length"
|
||||||
|
fi
|
||||||
|
eval 'echo "${str:'" $range"'}"'
|
||||||
|
}
|
||||||
|
function strrepl() {
|
||||||
|
# Remplacer dans la valeur $3* le motif $1 par la chaine $2. $1 peut commencer
|
||||||
|
# par l'un des caractères /, #, % pour indiquer le type de recherche
|
||||||
|
local pattern="$1"; shift
|
||||||
|
local repl="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
local cmd='echo "${str/'
|
||||||
|
if [ "${pattern#/}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#/}"
|
||||||
|
cmd="$cmd/"
|
||||||
|
elif [ "${pattern#\#}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#\#}"
|
||||||
|
cmd="$cmd#"
|
||||||
|
elif [ "${pattern#%}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#%}"
|
||||||
|
cmd="$cmd%"
|
||||||
|
fi
|
||||||
|
cmd="$cmd"'$pattern/$repl}"'
|
||||||
|
eval "$cmd"
|
||||||
}
|
}
|
||||||
function isnum() {
|
function isnum() {
|
||||||
# retourner vrai si $1 est une valeur numérique entière (positive ou négative)
|
# retourner vrai si $1 est une valeur numérique entière (positive ou négative)
|
||||||
|
|
Loading…
Reference in New Issue