Chaîne d'entrée "12345", chaîne de sortie "54321". De préférence sans outils tiers et sans regex.
Réponses
Trop de publicités?
MadHatter
Points
1868
Nick
Points
61
Lri
Points
8342
Utilisateur non enregistré
Points
0
Une solution bash améliorant la réponse de @osdyng (mon édition n'a pas été acceptée) :
var="12345" rev=""
for(( i=0 ; i<${#var} ; i++ )); do rev="${var:i:1}$rev"; done
echo "var: $var, rev: $rev"
Ou une boucle (bash) encore plus simple :
var=$1 len="${#var}" i=0 rev=""
while (( i<len )); do rev="${var:i++:1}$rev"; done
echo "var: $var, rev: $rev"
Une solution POSIX :
var="12345" rev="" i=1
while [ "$i" -le "${#var}" ]
do rev="$(echo "$var" | awk -v i="$i" '{print(substr($0,i,1))}')$rev"
: $(( i+=1 ))
done
echo "var: $var, rev: $rev"
Note : Ceci fonctionne sur des chaînes de caractères de plusieurs octets. Les solutions de coupure ne fonctionnent que sur les chaînes ASCII (1 octet).
- Réponses précédentes
- Plus de réponses