2012-12-02 18 views
17

Ich möchte alle nicht-alphanumerischen Zeichenfolgen durch einen Bindestrich ersetzen. Ein Ausschnitt von dem, was ich geschrieben habe, ist unten. Aber es funktioniert nicht und ich bin völlig ratlos warum. Könnte mir jemand erklären, warum sich das Snippet nicht so verhält, wie ich es erwarte und was wäre der richtige Weg, dies zu erreichen?Golang Regex ersetzen tut nichts

package main 

import (
    "fmt" 
    "regexp" 
    "strings" 
) 

func main() { 
    reg, _ := regexp.Compile("/[^A-Za-z0-9]+/") 
    safe := reg.ReplaceAllString("a*-+fe5v9034,j*.AE6", "-") 
    safe = strings.ToLower(strings.Trim(safe, "-")) 
    fmt.Println(safe) // Output: a*-+fe5v9034,j*.ae6 
} 
+5

Beachten Sie, dass Sie sollten 'regexp.MustCompile' statt ingoring den Fehler werden: http://golang.org/ pkg/regexp/# MustCompile –

+5

Das war ein Beispiel. Normalerweise zeige ich den zurückgegebenen Fehlern viel Liebe – karka91

Antwort

31

Die Schrägstriche werden von der Zeichenfolge nicht abgeglichen.

package main 

import (
     "fmt" 
     "log" 
     "regexp" 
     "strings" 
) 

func main() { 
     reg, err := regexp.Compile("[^A-Za-z0-9]+") 
     if err != nil { 
       log.Fatal(err) 
     } 

     safe := reg.ReplaceAllString("a*-+fe5v9034,j*.AE6", "-") 
     safe = strings.ToLower(strings.Trim(safe, "-")) 
     fmt.Println(safe) // Output: a*-+fe5v9034,j*.ae6 
} 

(auch here)

Ausgang

a-fe5v9034-j-ae6