---
title: 'String'
description: "Operator manipulasi teks dan pemrosesan string."
navigation:
icon: 'i-ph-code-block'
seo:
title: 'String'
description: "Operator manipulasi teks dan pemrosesan string."
---
## Tinjauan
Operator string menyediakan kemampuan manipulasi teks yang komprehensif untuk memformat, mengurai, mencari, dan mengubah data string. Operator ini sangat penting untuk membangun pesan bagi pengguna, mengurai input, dan bekerja dengan format data berbasis teks.
### Kasus Penggunaan Umum
- **Penggabungan**: Membangun pesan, label, dan output terformat dengan `cat`.
- **Ekstraksi**: Mengambil bagian teks dengan `substr`, `left`, `right`, `mid`.
- **Parsing**: Memecah data dengan pemisah tertentu menggunakan `splittext`, `splitvalue`.
- **Pencarian**: Menemukan teks di dalam string menggunakan `search`.
- **Pemformatan**: Menampilkan angka sebagai mata uang atau persentase dengan `stringformat`.
- **Validasi**: Memeriksa panjang string, pola, dan konten.
### Kompatibilitas Excel
Operator dengan varian huruf besar (misalnya, `CONCAT`, `SEARCH`, `LEFT`) mengikuti konvensi Excel untuk kompatibilitas maksimum dengan rumus spreadsheet.
---
## `cat` - Concatenate
Menggabungkan beberapa nilai menjadi sebuah string tunggal.
### Sintaks
```json
{"cat": [value1, value2, ...]}
```
### Parameter
- **values** (array): Nilai yang akan digabungkan (akan dikoersi ke string)
### Tipe Kembalian
String - Hasil penggabungan
### Contoh
**Penggabungan dasar:**
```json
{"cat": ["Halo", " ", "Dunia"]} // → "Halo Dunia"
{"cat": ["User: ", "Alice"]} // → "User: Alice"
```
**Dengan angka:**
```json
{"cat": ["Total: ", 42]} // → "Total: 42"
{"cat": ["$", 99.99]} // → "$99.99"
```
---
## `substr` - Substring
Mengambil bagian (substring) dari sebuah string.
### Sintaks
```json
{"substr": [string, start, length]}
{"substr": [string, start]}
```
### Parameter
- **string** (string): String sumber
- **start** (number): Indeks mulai (berbasis 0)
- **length** (number, opsional): Jumlah karakter yang akan diambil
### Contoh
**Substring dasar:**
```json
{"substr": ["Hello World", 0, 5]} // → "Hello"
{"substr": ["Hello World", 6, 5]} // → "World"
```
**Indeks negatif (dari belakang):**
```json
{"substr": ["Hello World", -5]} // → "World" (5 karakter terakhir)
```
---
## `search` / `SEARCH` - Cari Substring
Mencari substring di dalam sebuah string (case-insensitive). Mengembalikan indeks berbasis 1.
### Sintaks
```json
{"search": [find_text, within_text, start_num]}
```
### Parameter
- **find_text** (string): Teks yang dicari
- **within_text** (string): Teks tempat mencari
- **start_num** (number, opsional): Posisi mulai mencari (berbasis 1)
### Tipe Kembalian
Number - Posisi match pertama (berbasis 1), atau `null` jika tidak ditemukan.
---
## `left` / `LEFT` - Karakter Kiri
Mengambil sejumlah karakter dari sisi kiri string.
### Sintaks
```json
{"left": [text, num_chars]}
```
### Contoh
```json
{"left": ["Hello World", 5]} // → "Hello"
```
---
## `right` / `RIGHT` - Karakter Kanan
Mengambil sejumlah karakter dari sisi kanan string.
### Sintaks
```json
{"right": [text, num_chars]}
```
### Contoh
```json
{"right": ["Hello World", 5]} // → "World"
```
---
## `mid` / `MID` - Karakter Tengah
Mengambil sejumlah karakter dari tengah string (mengikuti gaya Excel).
### Sintaks
```json
{"mid": [text, start_num, num_chars]}
```
### Parameter
- **start_num**: Posisi mulai berbasis 1.
---
## `len` / `LEN` / `length` - Panjang String/Array
Mengembalikan panjang dari string, array, atau objek.
### Sintaks
```json
{"len": value}
{"length": value}
```
### Contoh
```json
{"len": "Hello"} // → 5
{"length": [1, 2, 3]} // → 3
```
---
## `splittext` - Pisahkan dan Ambil Indeks
Memecah string berdasarkan pemisah dan mengembalikan elemen pada indeks tertentu (berbasis 0).
### Sintaks
```json
{"splittext": [text, separator, index]}
```
### Contoh
```json
{"splittext": ["a,b,c", ",", 1]} // → "b"
```
---
## `splitvalue` - Pisahkan Menjadi Array
Memecah string menjadi sebuah array.
### Sintaks
```json
{"splitvalue": [string, separator]}
```
### Contoh
```json
{"splitvalue": ["a,b,c", ","]} // → ["a", "b", "c"]
```
---
## `stringformat` - Format Angka ke String
Memformat angka menjadi string dengan pemisah ribuan, desimal, awalan, dan akhiran.
### Sintaks
```json
{"stringformat": [value, decimals, prefix, suffix, thousands_sep]}
```
### Contoh
```json
{"stringformat": [1234.567, 2, "$"]} // → "$1,234.57"
{"stringformat": [75, 0, "", "%"]} // → "75%"
```
---
## Troubleshooting
### Masalah: Search mengembalikan null padahal teks ada
Pastikan urutan parameter sudah benar: `[teks_yang_dicari, teks_sumber]`. `SEARCH` juga menggunakan indeks berbasis 1.
### Masalah: Cat menghasilkan string "null"
Gunakan `ifnull` untuk memberikan nilai default (seperti string kosong) jika suatu variabel bernilai null agar tidak muncul tulisan "null" di hasil penggabungan.
---
## Praktik Terbaik
1. **Gunakan cat untuk kejelasan** saat menggabungkan pesan dinamis.
2. **Gunakan splitvalue** untuk memproses data CSV atau list yang dipisahkan karakter tertentu.
3. **Format mata uang secara konsisten** menggunakan `stringformat` di satu tempat.
4. **Selalu cek panjang string** dengan `len` sebelum melakukan ekstraksi untuk menghindari error.