J'essaie de supprimer tous les tirets excessifs des chaînes.Suppression des tirets excessifs avec OR regex
StateFileRegexDashes = regexp.MustCompile(
- + |^- + |? -? + )
$
Le regex ci-dessus semble fonctionner pour moi regex101, mais pas dans mon code. Je pensais que ce pourrait être à cause de la 'g | modificateur global', mais je suppose que est résolu par le 'All' part à ReplaceAllString()
golang Playground: https://play.golang.org/p/ZR72gZEhZ_
Regex101: https://regex101.com/r/tUYHo1/1
Modifier:
Le problème était que je remplaçais tout avec - tirets, où je voulais réellement supprimer les tirets préfixés et traînants. Au lieu de faire une autre regex, j'utilise maintenant strings.Trim()
maintenant.
var (
StateFileRegex = regexp.MustCompile(`[\/\?<>\\:\*\|":!\s.]`)
StateFileRegexDashes = regexp.MustCompile(`--+`)
)
func hashBotStateFile(name string) string {
lower := strings.ToLower(name)
dashes := StateFileRegex.ReplaceAllString(lower, StateFileCharReplacer)
singles := StateFileRegexDashes.ReplaceAllString(dashes, StateFileCharReplacer)
trimmed := strings.Trim(singles, "-")
return filepath.Join(StateFileFolder, fmt.Sprintf("%s.json", trimmed))
}
Ahh, je vois ce que tu veux dire. Remplacez les doubles traits par des tirets, remplacez les tirets par rien! Aussi bon point sur le modificateur gourmand! –