Accéder au contenu principal

Les chaînes de caractères


Les chaînes de caractères

Bash possède de nombreuses fonctionnalités pour manipuler les chaînes de caractères qui ne sont pas aissé à maîtriser.

Longueur d'une chaîne de caractère

Il existe au moins 2 méthodes pour y parvenir.
nom="Paul"
${#nom} #retourne 4

nom="Paul"
echo `expr length $nom` #retourne 4

Si la chaîne contient des espaces, il faut mettre des " au tour de la chaîne de caractère lorsqu'on utilise la deuxième méthodes.

nom="Paul Smith"
echo `expr length "$nom"`  #retourne 10

Il faut faire attention lorsque la chaîne de caractère contient des '. Il faut alors utiliser le \.

message='C'\''est froid dehors'
echo ${#message}  #retourne 18
echo ${message}   #retourne C'est froid dehors

Extraction d'une chaîne de caractère

Bash permet d'extraire une chaîne caractère d'une autres à partir de différente position.
Le première paramètre spécifié indique la position de départ et le second indique la longueur.

message="Il fait froid dehors"
echo ${message:3} # retourne fait froid dehors
echo ${message:8:5} # retourne froid
echo ${message:(-6)} # retourne dehors

Enlever des caractères en début de chaîne

Cette possibilité permet d'enlever les caractères se trouvant en début de chaîne, il faut spécifier la chaîne désirer être enlever. Il est possible d'utiliser l'étoile. Elle signifie n'importe quelle caractère.

message="Il fait froid dehors"
echo ${message#Il}   #fait froid dehors
echo ${message#I*d}   #dehors

Dans le seconde cas, il est spécifié, enlever la chaîne débutant par I et se terminant par d.

Enlever des caractères en fin de chaîne

C'est identique à la fonction précédente, excepté qu'elle commence par la fin de la chaîne

message="Il fait froid dehors"
echo ${message%d*s}   #Il fait froid

Remplacer une chaîne par une autre

Le première paramère est la chaîne de caractère initiale, le deuxième est la valeur recherché et le troisière est la valeur qui remplacera le deuxième paramètre.

message="Il fait froid dehors"
echo ${message/froid/chaud}   #Il fait chaud dehors

Prenez note que si vous voulez replacer toutes les occurences du deuxième paramètre par le troisième, il faut doublez le / du deuxième paramètre.

message="Il fait froid dehors"
echo ${message//froid/chaud}   #Il fait chaud dehors

Nous avons vu les quelques fonctions que Bash propose pour manipuler des chaînes de caractères. Leurs syntaxes varie ce qui rend leur utilisation un peu plus difficile.

Commentaires

Posts les plus consultés de ce blog

Toshiba AC100 et Android 4

Toshiba AC100 est un smartbook. Toshiba est la seule grosse entreprise qui a commercialisé un smartbook, malgré que plusieurs autres en aient présenté. Un smartbook est similaire à un netbook (taille) en plus d'avoir des caractéristiques souvent proche à un mobile (GPS, 3g, processeur ARM, autonomie). Le Toshiba AC100 utilisait le système d'exploitation Android en version 2.1. Toshiba a effectué une mise à jour Android 2.2. Il a arrêté la commercialisation et le support de cette machine. L'appareil ayant un bon rapport qualité/prix, la communauté le prit en charge. Il est possible d'installer une version beaucoup plus récente d'Android telle que la 4.1. La rom alternative Cyanogen a été utilisée pour ce portage. Les procédures citées ont été faites sous Linux.  Sous Windows, il faut télécharger une version de nvflash pour ce système. Préparation Télécharger les fichiers: cm_ac100-ota-eng.cm10-beta2.zombah.zip recovery.ac100-cm10_beta2.img via ce...

Spring data jpa et Hibernate’s Warning “firstResult/maxResults specified with collection fetch”

Nous verrons dans cet article comment corrigé le problème  Hibernate’s Warning “firstResult/maxResults specified with collection fetch” qui peut survenir lorsqu'il y a un fetch d'effectuer et qu'il y a du paging. Nous utiliserons spring data jpa. Détail structure Imaginons une relation 1 à plusieurs Lorsqu'on obtient un parent, on désire obtenir aussi sa liste d'enfants. En sql, il y aurait une jointure à effectuer. Il est question d'une recherche avancé où on pourrait recherche par plusieurs critères. Spécification Création d'une spécification pour construire une requête dynamique @Component public class ParentSpecification {     public Specification<Parent> recherche(RechercheParent recherche) {         return (root, cq, cb) -> {             Join<Parent, enfant> enfantJoin;              List<Predicate> rootPredicates = new ArrayList<>();       ...

Migration d’une application Spring Boot 2.2 vers Spring Boot 4.0 : retour d’expérience concret

 En 2019, nous avons développé une application métier basée sur : Java 8 Spring Boot 2.2.7 Gradle 6.6.1 Thymeleaf Bootstrap 4.3.1 Environ 40 000 lignes de code Java Fin 2025, voici un retour d’expérience concret sur la migration vers : Java 25 Spring Boot 4.0.1 Gradle 9.2.1 La partie thymeleaf, n'a pas été touché, il y a quelques warning concernant l'obsolescence de certain commande tel que th:include. Une migration plus rapide que prévu Un point important : en moins de 30 minutes, l’application démarrait sur la nouvelle stack. Évidemment, "ça démarre" ne veut pas dire "tout fonctionne", mais ce premier jalon est très révélateur : la base Spring Boot reste solide les outils de migration sont matures la dette technique était maîtrisée Les changements majeurs rencontrés De javax.* à jakarta.* C’est probablement le changement le plus visible. Tous les imports javax.* doivent être migrés ve...