Maison développement back-end Golang Discuter des opérations de remplacement de chaînes dans Golang

Discuter des opérations de remplacement de chaînes dans Golang

Mar 30, 2023 am 11:39 AM

Golang est un langage de programmation efficace, caractérisé par une forte lisibilité, une écriture de code simple et une vitesse d'exécution extrêmement élevée. En tant que développeur Golang, nous rencontrons souvent des situations dans lesquelles nous devons opérer sur des chaînes, et Golang fournit de nombreuses fonctions et méthodes pratiques pour répondre à ce besoin. L'un des besoins courants consiste à remplacer le contenu d'une chaîne. Dans cet article, nous discuterons des opérations de remplacement de chaînes dans Golang.

Tout d’abord, jetons un coup d’œil à l’opération de remplacement de chaîne la plus élémentaire. Le package de chaînes de Golang fournit la fonction Replace() pour effectuer le remplacement de chaînes. La fonction Replace() accepte trois paramètres : la chaîne source, la chaîne à remplacer et la chaîne remplacée. Voici un exemple d'implémentation de code :

1

2

3

4

5

6

7

8

9

10

11

12

package main

 

import (

    "fmt"

    "strings"

)

 

func main() {

    str := "Hello,World!"

    newStr := strings.Replace(str, "World""Golang", -1)

    fmt.Println(newStr)

}

Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la fonction strings.Replace() pour remplacer la chaîne "World" par "Golang". Le troisième paramètre de la fonction -1 signifie remplacer toutes les chaînes correspondantes. Si nous voulons remplacer uniquement la première chaîne correspondante, nous pouvons définir le troisième paramètre sur 1 :

1

newStr := strings.Replace(str, "World""Golang", 1)

Copier après la connexion

Voyons ensuite comment implémenter un remplacement de chaîne plus flexible et plus complexe.

Remplacement d'expression régulière

L'expression régulière est un puissant outil de correspondance de chaînes. Dans Golang, le package regexp prend en charge les expressions régulières. Nous pouvons utiliser des expressions régulières pour réaliser des opérations de remplacement de chaînes plus flexibles et plus complexes. Voici un exemple de code qui implémente le remplacement des nombres par des lettres :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

package main

 

import (

    "fmt"

    "regexp"

)

 

func main() {

    str := "123abc"

    re := regexp.MustCompile(`\d+`)

    newStr := re.ReplaceAllStringFunc(str, func(s string) string {

        r := []rune(s)

        return string(r[0] + 49)

    })

    fmt.Println(newStr)

}

Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la fonction ReplaceAllStringFunc() fournie par le package regexp pour remplacer les chaînes. La fonction ReplaceAllStringFunc() accepte deux paramètres : la chaîne source et la fonction de rappel. La fonction de rappel accepte une chaîne de paramètre et renvoie la chaîne remplacée. Dans cet exemple, nous utilisons l'expression régulière d+ pour faire correspondre les nombres, puis dans la fonction de rappel, nous remplaçons chaque nombre par la lettre qui le suit, par exemple 0 est remplacé par a, 1 est remplacé par b, et ainsi de suite.

Fonction de remplacement personnalisée

Dans l'exemple ci-dessus, nous avons utilisé des expressions régulières pour faire correspondre les chaînes. Mais parfois, nous ne voulons pas utiliser d'expressions régulières, mais devons écrire une fonction de remplacement personnalisée pour terminer l'opération de remplacement. Voici un exemple de code qui convertit les lettres majuscules en lettres minuscules :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

package main

 

import (

    "fmt"

    "unicode"

)

 

func main() {

    str := "Hello,World!"

    newStr := ReplaceFunc(str, func(r rune) rune {

        if unicode.IsUpper(r) {

            return unicode.ToLower(r)

        }

        return r

    })

    fmt.Println(newStr)

}

 

func ReplaceFunc(str string, f func(rune) rune) string {

    runes := []rune(str)

    for i, c := range runes {

        runes[i] = f(c)

    }

    return string(runes)

}

Copier après la connexion

Dans l'exemple ci-dessus, nous avons écrit une fonction de remplacement personnalisée ReplaceFunc(). La fonction ReplaceFunc() accepte deux paramètres : une chaîne et une fonction de rappel. La fonction de rappel accepte un paramètre de type rune et renvoie le type de rune remplacé, puis utilise cette fonction de rappel pour remplacer chaque caractère de la chaîne.

Résumé

Dans Golang, nous pouvons utiliser le package de chaînes, le package d'expressions régulières et les fonctions de remplacement personnalisées pour implémenter des opérations de remplacement de chaînes flexibles et complexes. Ces fonctions et procédés fournissent de nombreuses fonctions pratiques pour réaliser efficacement des opérations de remplacement de chaînes. J'espère que cet article pourra vous être utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

GO Language Pack Import: Quelle est la différence entre le soulignement et sans soulignement? GO Language Pack Import: Quelle est la différence entre le soulignement et sans soulignement? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Quelle est la différence entre le soulignement et sans soulignement?

Comment mettre en œuvre le transfert d'informations à court terme entre les pages du cadre Beego? Comment mettre en œuvre le transfert d'informations à court terme entre les pages du cadre Beego? Mar 03, 2025 pm 05:22 PM

Comment mettre en œuvre le transfert d'informations à court terme entre les pages du cadre Beego?

Comment écrire des objets et des talons simulés pour les tests en Go? Comment écrire des objets et des talons simulés pour les tests en Go? Mar 10, 2025 pm 05:38 PM

Comment écrire des objets et des talons simulés pour les tests en Go?

Comment convertir la liste des résultats de la requête MySQL en une tranche de structure personnalisée dans le langage Go? Comment convertir la liste des résultats de la requête MySQL en une tranche de structure personnalisée dans le langage Go? Mar 03, 2025 pm 05:18 PM

Comment convertir la liste des résultats de la requête MySQL en une tranche de structure personnalisée dans le langage Go?

Comment puis-je définir des contraintes de type personnalisé pour les génériques en Go? Comment puis-je définir des contraintes de type personnalisé pour les génériques en Go? Mar 10, 2025 pm 03:20 PM

Comment puis-je définir des contraintes de type personnalisé pour les génériques en Go?

Comment puis-je utiliser des outils de traçage pour comprendre le flux d'exécution de mes applications GO? Comment puis-je utiliser des outils de traçage pour comprendre le flux d'exécution de mes applications GO? Mar 10, 2025 pm 05:36 PM

Comment puis-je utiliser des outils de traçage pour comprendre le flux d'exécution de mes applications GO?

Comment rédigez-vous des tests unitaires en Go? Comment rédigez-vous des tests unitaires en Go? Mar 21, 2025 pm 06:34 PM

Comment rédigez-vous des tests unitaires en Go?

Comment écrire des fichiers dans GO Language de manière pratique? Comment écrire des fichiers dans GO Language de manière pratique? Mar 03, 2025 pm 05:15 PM

Comment écrire des fichiers dans GO Language de manière pratique?

See all articles