Part 8 — String & Teks

Manipulasi string di Stata: string functions, regex, split, trim, dan format.
Fundamental
String
Diterbitkan

26 Februari 2026

Fundamental Series — Part 8 of 20

Data teks sangat umum: nama, alamat, kode wilayah, label variabel. Part ini membahas fungsi-fungsi string bawaan Stata.


String di Macro

local s "Halo Dunia"
display "`s'"
display strlen("`s'")    // 10

Fungsi String Dasar

Panjang

display strlen("Indonesia")    // 9

Uppercase / Lowercase

display strupper("halo")       // HALO
display strlower("HALO")       // halo
display strproper("halo dunia") // Halo Dunia

Trim Spasi

display strtrim("  halo  ")    // "halo"
display stritrim("halo   dunia") // "halo dunia"
display strltrim("  halo")     // "halo"
display strrtrim("halo  ")     // "halo"

Substring & Posisi

display substr("Indonesia", 1, 4)    // Indo
display substr("Indonesia", -5, 5)   // nesia

display strpos("Indonesia", "nesia") // 5
display strrpos("banana", "a")       // 6

Menggabung & Memisah

Concatenation

local nama "Budi"
local umur "25"
display "`nama' berumur `umur' tahun"

* Dalam data:
clear
input str20 first str20 last
"Budi" "Santoso"
"Ani" "Wijaya"
end

generate fullname = first + " " + last

Split

clear
input str30 tanggal
"2026-02-26"
"2025-12-31"
end

split tanggal, parse("-") generate(part)
* Membuat variabel: part1, part2, part3

Find & Replace dalam Data

sysuse auto, clear

* Cari string
generate has_buick = strpos(make, "Buick") > 0

* Replace string
generate make_clean = subinstr(make, ".", "", .)

* Regex
generate has_digit = regexm(make, "[0-9]")
generate extracted = regexs(0) if regexm(make, "[A-Z][a-z]+")

Regex di Stata

Fungsi Keterangan
regexm(s, pattern) Return 1 jika match
regexs(n) Return capture group ke-n (setelah regexm)
regexr(s, pattern, replace) Replace pertama match
* Contoh: extract angka dari string
clear
input str30 harga
"Rp 50000"
"Rp 10000"
"Rp 40000"
end

generate has_num = regexm(harga, "([0-9]+)")
generate angka_str = regexs(1) if has_num
destring angka_str, generate(angka)
CatatanRegex Stata Terbatas

Stata menggunakan regex POSIX (bukan PCRE). Beberapa fitur regex modern (lookahead, lookbehind) tidak didukung.


Encode & Decode

* ASCII code
display char(65)       // A
display char(97)       // a

* String ke numerik
display real("123.45") // 123.45

* Numerik ke string
display string(123.45, "%9.2f")  // 123.45

Latihan

BahayaLatihan 8.1 — Manipulasi Dasar
* Buat dataset:
clear
input str30 kota
"  jakarta  "
" BANDUNG"
"surabaya "
"SEMARANG"
end

* 1. Trim spasi
* 2. Ubah ke Proper Case
* 3. Buat variabel dummy: punya_a = 1 jika mengandung "a" (case-insensitive)
BahayaLatihan 8.2 — Split & Extract
* Buat dataset:
clear
input str50 info
"Jakarta;DKI;10560"
"Bandung;Jawa Barat;40115"
"Surabaya;Jawa Timur;60271"
end

* 1. Split berdasarkan ";"
* 2. Extract kode pos (angka 5 digit) pakai regex
* 3. Destring kode pos jadi numerik

Ringkasan

Fungsi Keterangan
strlen() Panjang string
strupper() / strlower() Ubah case
strtrim() Trim spasi
substr() Ambil substring
strpos() Cari posisi
subinstr() Replace substring
regexm() / regexs() Regex match & extract
regexr() Regex replace
split Pecah string jadi variabel

Sebelumnya: Part 7 — Fungsi Selanjutnya: Part 9 — Date & Time