2012-12-02 28 views
17

Tôi muốn thay thế bất kỳ chuỗi ký tự không phải chữ và số nào bằng dấu gạch ngang. Một đoạn trích của những gì tôi viết bên dưới. Tuy nhiên nó không hoạt động và tôi hoàn toàn không biết sao. Bất cứ ai có thể giải thích cho tôi lý do tại sao đoạn mã hoạt động không giống như tôi mong đợi nó và những gì sẽ là cách chính xác để thực hiện điều này?Golang regex thay thế không có gì

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

Lưu ý rằng bạn nên sử dụng 'regexp.MustCompile' thay vì ingoring lỗi: http://golang.org/ pkg/regexp/# MustCompile –

+5

đây là một ví dụ. Tôi thường thể hiện rất nhiều tình yêu với những lỗi được trả về – karka91

Trả lời

31

Dấu gạch chéo phía trước không khớp với chuỗi của bạn.

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 
} 

(Cũng here)

Output

a-fe5v9034-j-ae6