2012-12-02 16 views
17

我想用短劃線替換任何非字母數字字符序列。下面是我寫的一小段內容。然而它不起作用,我完全無能爲力。任何人都可以解釋爲什麼該代碼段的行爲不像我期望的那樣,以及完成此操作的正確方法是什麼?Golang正則表達式替換什麼都不做

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

請注意,您應該使用',而不是regexp.MustCompile' ingoring錯誤:http://golang.org/ pkg/regexp /#MustCompile –

+5

這是一個例子。我通常對返回的錯誤表現出很多的愛 – karka91

回答

31

正斜線與您的字符串不匹配。

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 
} 

(也here

輸出

a-fe5v9034-j-ae6