# IP 地址无效化 --- ```javascript= 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."。   示例 1: 输入:address = "1.1.1.1" 输出:"1[.]1[.]1[.]1" 示例 2: 输入:address = "255.100.50.0" 输出:"255[.]100[.]50[.]0" ``` :::success ```go= package main import ( "fmt" "regexp" "strings" ) func main() { fmt.Println("strings Replace", defangIPaddr("192.168.1.1")) fmt.Println("strings ReplaceAll", defangIPaddr1("192.168.1.1")) fmt.Println("strings Join + Split", defangIPaddr2("192.168.1.1")) fmt.Println("string to []byte, []byte to string a", defangIPaddr3("192.168.1.1")) fmt.Println("string to []byte, []byte to string b", defangIPaddr4("192.168.1.1")) fmt.Println("string to []string, strings Join []string", defangIPaddr5("192.168.1.1")) fmt.Println("regexp", defangIPaddr6("192.168.1.1")) } // strings ReplaceAll func defangIPaddr(address string) string { return strings.Replace(address, ".", "[.]", -1) // -1表示替换时没有数量限制 } // strings ReplaceAll func defangIPaddr1(address string) string { return strings.ReplaceAll(address, ".", "[.]") // 不重叠实例的旧替换为新 } // strings Join+Split func defangIPaddr2(address string) string { return strings.Join(strings.Split(address, "."), "[.]") // Join 连接字符串, Split拆分字符串 } // string to []byte, []byte to string func defangIPaddr3(address string) string { bytes := make([]byte, 0) for i := 0; i < len(address); i++ { if address[i] != '.' { bytes = append(bytes, address[i]) } else { bytes = append(bytes, '[', '.', ']') } } return string(bytes) } func defangIPaddr4(address string) string { bytes := make([]byte, 0) for _, value := range address { if value != '.' { bytes = append(bytes, byte(value)) } else { bytes = append(bytes, '[', '.', ']') } } return string(bytes) } // string to []string, strings Join []string func defangIPaddr5(address string) string { result := make([]string, 0) for _, value := range address { if value == '.' { result = append(result, "[.]") } else { result = append(result, string(value)) } } return strings.Join(result, "") } func defangIPaddr6(address string) string { return regexp.MustCompile("(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)").ReplaceAllString(address, "$1[.]$2[.]$3[.]$4") } ``` ::: - **结果输出** ```go= strings Replace 192[.]168[.]1[.]1 strings ReplaceAll 192[.]168[.]1[.]1 strings Join + Split 192[.]168[.]1[.]1 string to []byte, []byte to string a 192[.]168[.]1[.]1 string to []byte, []byte to string b 192[.]168[.]1[.]1 string to []string, strings Join []string 192[.]168[.]1[.]1 regexp 192[.]168[.]1[.]1 ``` ###### tags: `LeeCode`