Ich versuche, alle übermäßigen Striche aus Strings zu entfernen.Entfernen von übermäßigen Bindestrichen mit OR Regex
StateFileRegexDashes = regexp.MustCompile(
- + |^- + |? -? + $ )
Die obige Regex scheint für mich auf regex101 zu arbeiten, aber nicht in meinem Code. Ich dachte, es ist wegen der sein könnte ‚g | global Modifikator‘, aber ich nehme an, dass durch die ‚alle‘ an ReplaceAllString()
Golang Spielplatz gelöst: https://play.golang.org/p/ZR72gZEhZ_
Regex101: https://regex101.com/r/tUYHo1/1
bearbeiten:
Problem war ich wurde alles mit - Bindestriche ersetzen, wo ich eigentlich Präfixe und nachfolgende Bindestriche entfernen wollte.
Anstatt eine andere Regex zu tun, verwende ich jetzt nur strings.Trim()
.
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, ich verstehe was du meinst. Ersetzen Sie doppelte Bindestriche durch Bindestrich, ersetzen Sie Bindestriche durch nichts! Auch ein guter Punkt über den gierigen Modifikator! –