0Pricing
Go Academy · Pelajaran

Mengganti Teks

Pola ReplaceAll

Mengganti Teks adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Penggantian Berbasis Pola

Regexp dapat menulis ulang teks, bukan hanya menemukannya. ReplaceAllString mengganti setiap kecocokan dengan teks pengganti.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.ReplaceAllString("a1b2c3", "#"))
}

Mengganti Kata Lengkap

Pola seperti cat|dog memungkinkan Anda mengganti beberapa alternatif dalam satu proses.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("cat|dog")
    fmt.Println(re.ReplaceAllString("my cat and dog", "pet"))
}

Meringkas Spasi Kosong

Pembersihan yang umum dilakukan adalah mengganti rangkaian spasi kosong dengan satu spasi menggunakan \s+.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("\\s+")
    fmt.Println(re.ReplaceAllString("too   many    spaces", " "))
}

Merujuk ke Grup

Dalam penggantian, $1 menyisipkan grup tangkapan pertama, sedangkan $2 menyisipkan grup kedua. Cara ini menyusun ulang bagian-bagian yang cocok.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d+)-(\\d+)")
    fmt.Println(re.ReplaceAllString("12-34", "$2-$1"))
}

Referensi Grup Bernama

Dengan grup bernama, Anda dapat menggunakan ${name} dalam penggantian agar lebih jelas.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(?P<y>\\d{4})-(?P<m>\\d{2})")
    fmt.Println(re.ReplaceAllString("2026-05", "${m}/${y}"))
}

Kurung Kurawal yang Aman

Gunakan kurung kurawal ${1} ketika teks mengikuti referensi grup, agar $1 tidak disalahartikan sebagai nama yang lebih panjang.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d+)")
    fmt.Println(re.ReplaceAllString("7", "${1}px"))
}

Penggantian Literal

ReplaceAllLiteralString mengabaikan referensi $ dan menyisipkan penggantian persis seperti yang ditulis.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.ReplaceAllLiteralString("a1", "$money"))
}

Mengganti dengan Fungsi

ReplaceAllStringFunc memanggil fungsi Anda untuk setiap kecocokan dan menggantinya dengan apa pun yang dikembalikan fungsi tersebut. Dengan demikian, Anda dapat menghitung penggantian.

package main

import (
    "fmt"
    "regexp"
    "strings"
)

func main() {
    re := regexp.MustCompile("[a-z]+")
    out := re.ReplaceAllStringFunc("go is fun", strings.ToUpper)
    fmt.Println(out)
}

Penggantian Terhitung

Di dalam fungsi, Anda dapat mengubah setiap kecocokan sesuka Anda; di sini, setiap rangkaian digit yang cocok digandakan dengan membungkusnya.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    out := re.ReplaceAllStringFunc("id5 and id9", func(m string) string {
        return "<" + m + ">"
    })
    fmt.Println(out)
}

Menyamarkan Data Sensitif

Salah satu penggunaan praktisnya adalah menyamarkan angka, seperti rangkaian digit bergaya nomor kartu, sebelum pencatatan.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("\\d{4}")
    fmt.Println(re.ReplaceAllString("card 1234 5678", "****"))
}

Bekerja dengan Byte

Varian slice byte seperti ReplaceAll juga tersedia, dengan metode yang mencerminkan metode string untuk data biner atau buffer.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    out := re.ReplaceAll([]byte("a1b2"), []byte("#"))
    fmt.Println(string(out))
}

Pemeriksaan Cepat

Bagaimana cara menyisipkan grup tangkapan pertama dalam string penggantian?

Ringkasan: Mengganti Teks

Anda telah mempelajari cara menulis ulang teks:

  • ReplaceAllString menukar kecocokan; $1/${name} merujuk ke grup.
  • ReplaceAllLiteralString melewati perluasan.
  • ReplaceAllStringFunc menghitung setiap penggantian.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\w+)\\s(\\w+)")
    fmt.Println(re.ReplaceAllString("Ada Lovelace", "$2, $1"))
}

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengganti Teks” gratis?

Ya — teks lengkap “Mengganti Teks” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengganti Teks”?

Pola ReplaceAll Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Mengganti Teks” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar regexp
  2. Menemukan dan Mengekstrak
  3. Mengganti Teks
  4. Tips Performa
← Kembali ke Go Academy