Maison >développement back-end >Golang >Comment remplacer correctement les chaînes en golang par le « principe gourmand » ?

Comment remplacer correctement les chaînes en golang par le « principe gourmand » ?

PHPz
PHPzavant
2024-02-08 20:53:44997parcourir

Comment remplacer correctement les chaînes en golang par le « principe gourmand » ?

Contenu de la question

J'ai essayé de bloquer la chaîne, mais quelque chose s'est mal passé

Le code reproductible est ci-dessous et nécessite toutes les anciennes et nouvelles paires, comment l'obtenir col1 而不是 col0b ?

package main

import (
    "fmt"
    "strings"
)

func main() {
    r := strings.NewReplacer("a", "col0", "ab", "col1")
    s := "ab"
    fmt.Println(r.Replace(s))
}

Je veux que la chaîne soit remplaçable par la longueur maximale ou le principe gourmand


Réponse correcte


Selon la documentation, le remplacement de NewReplacer exécute les chaînes dans l'ordre dans lequel elles apparaissent dans la cible, sans correspondances qui se chevauchent, donc il suivra toujours la première base de correspondance. Si cela est autorisé, je pense que vous pourriez résoudre ce problème en réorganisant les paires de remplacement afin que la chaîne la plus longue (“ab”-“col1”)放置在较短的字符串(“a”,“col0”) passe avant

package main

import (
    "fmt"
    "strings"
)

func main() {
    r := strings.NewReplacer("ab", "col1", "a", "col0")
    s := "ab"
    fmt.Println(r.Replace(s))
}

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer