Maison >développement back-end >Golang >Comment effectuer des recherches de chaînes insensibles à la casse dans Go ?

Comment effectuer des recherches de chaînes insensibles à la casse dans Go ?

DDD
DDDoriginal
2024-11-10 00:41:02490parcourir

How to Perform Case-Insensitive String Searches in Go?

Recherche de chaînes insensibles à la casse dans Go

Lors de la recherche de chaînes spécifiques dans des fichiers, il peut être nécessaire d'effectuer des recherches insensibles à la casse pour garantir toutes les occurrences sont capturées. Ceci est particulièrement utile lorsque vous travaillez avec du texte pouvant contenir à la fois des caractères majuscules et minuscules.

Dans Go, la fonction strings.EqualFold() fournit une solution pratique pour la correspondance de chaînes insensible à la casse. Il compare deux chaînes et renvoie vrai si elles sont égales, quelle que soit la casse des caractères. Cette fonction gère même les caractères Unicode, ce qui la rend adaptée à un large éventail de cas d'utilisation.

Par exemple, considérons le scénario suivant : vous devez rechercher la chaîne "Mise à jour" dans un fichier. Vous souhaitez que la recherche corresponde à la fois à "Update" et "update", car ils sont considérés comme équivalents dans un contexte insensible à la casse.

Pour ce faire, vous pouvez utiliser la fonction strings.EqualFold() comme suit :

package main

import (
    "fmt"
    "strings"
)

func main() {
    if strings.EqualFold("Update", "update") {
        fmt.Println("Match found")
    }
}

Dans cet exemple, la fonction strings.EqualFold() retournera true, indiquant que "Update" et "update" sont considérés comme égaux lorsque la casse est ignorée.

Pour plus exemple complet, considérons le programme suivant qui montre comment effectuer une recherche insensible à la casse dans un fichier :

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    // Open the file for reading
    file, err := os.Open("file.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // Create a scanner to iterate over the file line by line
    scanner := bufio.NewScanner(file)

    // Specify the target string to search for
    target := "Update"

    // Read the file line by line
    for scanner.Scan() {
        line := scanner.Text()

        // Perform a case-insensitive search for the target string
        if strings.Contains(strings.ToLower(line), strings.ToLower(target)) {
            fmt.Println("Match found in line:", line)
        }
    }
}

Dans ce programme, la fonction strings.Contains() est utilisée pour rechercher la version minuscule de la chaîne cible dans la version minuscule de chaque ligne du fichier. Cela garantit que "Update" et "update" correspondent.

La sortie du programme sera une liste de lignes contenant la chaîne cible, quelle que soit sa casse. Ceci montre comment effectuer des recherches de chaînes insensibles à la casse dans Go à l'aide des fonctions strings.EqualFold() et strings.Contains().

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:
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