# 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`