Saya ingin tahu apakah ada cara untuk menerapkan penyembunyian/format khusus ke string dan mendapatkan nomor keluaran:= 12345678 Saya ingin memformat nomor saya ke format tertentu. func formatNumber(angka string) string { ...

-2
NEEL PATEL 5 April 2021, 20:06

2 jawaban

Jawaban Terbaik

Ada beberapa kesalahpahaman dalam contoh kode Anda. Angka di komputer tidak diformat, tetapi representasi string dari angka bisa. Contoh di bawah.

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"
}

Lihat https://golang.org/pkg/fmt/ untuk mengetahui lokasi %T dan %d dan %s berasal.

Untuk memformat angka, saya rasa Anda tidak bisa mendapatkan apa yang Anda inginkan. Beberapa pilihan meskipun:

Di bawah ini memberi Anda sesuatu seperti yang Anda inginkan berdasarkan pertanyaan Anda.

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)
}

Ini adalah taman bermain dengan kode ini.

1
Frank Bryce 5 April 2021, 17:53

Gunakan matematika untuk menghitung angka untuk setiap posisi. Format angka-angka tersebut menggunakan fmt.Sprintf:

func formatNumber(number string) string {
    return fmt.Sprintf("%03d-%02d %03d", 
         number/100000, (number%100000)/1000, 
         number%1000)
}

Fitur dari jawaban ini dibandingkan dengan yang lain adalah ia menangani angka kurang dari 10000000 dengan benar.

0
ThinkGoodly 5 April 2021, 18:49