我想知道是否有办法将自定义掩码/格式应用于字符串并获取输出
number:= 12345678
我想将我的号码格式化为特定格式。
func formatNumber(number string) string {
format:= 123-45 678
// do something here to format number
return formatedNumber
}
答案 0 :(得分:1)
您的代码示例中有一些误解。计算机中的数字没有格式化,但数字的字符串表示可以。 Example 下方。
func main() {
n1 := 12345678 // type = int
fmt.Printf("type: %T, value: %d\n", n1, n1) // outputs "type: int, value: 12345678"
n2 := "12345678" // type = string
fmt.Printf("type: %T, value: %s\n", n2, n2) // outputs "type: string, value: 12345678"
}
请参阅 https://golang.org/pkg/fmt/ 了解 %T
和 %d
和 %s
的来源。
要格式化数字,我认为您无法准确获得所需的内容。不过有几个选项:
int
变成 string
:mystring := fmt.Sprintf("%d", myint)
下面会根据您的问题为您提供类似您想要的内容。
func main() {
mynumber := 12345678
mystring := fmt.Sprintf("%d", mynumber)
myformattedstring := fmt.Sprintf("%s-%s %s", mystring[:3], mystring[3:5], mystring[5:])
fmt.Println(myformattedstring)
}
Here is a playground 使用此代码。
答案 1 :(得分:1)
使用数学计算每个位置的数字。使用 fmt.Sprintf 格式化这些数字:
func formatNumber(number string) string {
return fmt.Sprintf("%03d-%02d %03d",
number/100000, (number%100000)/1000,
number%1000)
}
与其他答案相比,这个答案的一个特点是它可以正确处理小于 10000000 的数字。