Thep Excel

replace – แทนที่ข้อความหรือ pattern ตัวแรกที่พบใน string

replace() เป็น JavaScript string method มาตรฐานที่ใช้ใน n8n expressions สำหรับแทนที่ข้อความหรือ regex pattern ตัวแรกที่พบในข้อความเท่านั้น จุดสำคัญที่ต้องจำคือ มันแทนที่แค่ตัวแรก ไม่ได้แทนที่ทุกตัวที่เจอ method นี้รองรับทั้ง string literal และ regex pattern พร้อม capturing groups เช่น $1, $2 สำหรับการแทนที่ข้อความที่ซับซ้อนและจัดเรียงข้อมูลใหม่ได้ ใช้บ่อยใน n8n workflows สำหรับการทำความสะอาดข้อมูลจาก webhook หรือ API response การลบคำนำหน้าหรือคำต่อท้าย การแก้ไขรูปแบบ URL ก่อนเรียก HTTP Request และการปรับแต่งข้อความก่อนส่งต่อไปยัง API หรือ database

string.replace(searchValue, replaceValue)

By ThepExcel AI Agent
18 December 2025

Function Metrics


Popularity
8/10

Difficulty
3/10

Usefulness
8/10

Syntax & Arguments

string.replace(searchValue, replaceValue)

Argument Type Required Default Description
searchValue string|regex Yes ข้อความหรือ regex pattern ที่ต้องการค้นหาและแทนที่ ถ้าเป็น string จะแทนที่เฉพาะตัวแรกแบบ case-sensitive ถ้าเป็น regex สามารถใช้ flags เช่น /i (ignore case) หรือ /g (global) ได้
replaceValue string|function Yes ข้อความใหม่ที่จะนำมาแทนที่ รองรับ special patterns เช่น $& (matched text), $1 $2 (capturing groups), $` (text before match), $’ (text after match) หรือสามารถเป็น function สำหรับการแปลงแบบ dynamic

How it works

Data Cleaning – ลบ Prefix/Suffix

ลบคำนำหน้าหรือคำต่อท้ายที่ไม่ต้องการออกจากข้อมูล เช่น ลบ 'ID_' จาก 'ID_12345', ลบ '.tmp' จากชื่อไฟล์ เหมาะสำหรับทำความสะอาดข้อมูลก่อนส่งเข้า database

Text Normalization – ปรับรูปแบบข้อมูล

แทนที่ตัวคั่นหรือรูปแบบข้อมูลให้ตรงกับมาตรฐาน เช่น แทนที่ space ตัวแรกด้วย underscore, เปลี่ยน date format จาก '/' เป็น '-', แก้ไข URL path ให้ถูก format

Error Correction – แก้ไขข้อผิดพลาดในข้อความ

แก้ไขการสะกดผิดหรือแทนที่คำที่ไม่เหมาะสมในข้อความ เช่น แก้ชื่อประเทศที่สะกดผิด, แทนที่คำหยาบด้วย *, แก้ไข typo ที่พบบ่อย

URL/Path Transformation – แปลง URL หรือ File Path

แก้ไข URL หรือ file path ให้ตรงกับ environment ต่างๆ เช่น แทนที่ 'http://' เป็น 'https://', เปลี่ยน base URL ตัวแรก, แก้ไข domain name

Examples

ตัวอย่างที่ 1: การแทนที่ String ตัวแรกเท่านั้น (Basic)
{{ 'apple banana apple cherry'.replace('apple', 'orange') }}
นี่คือพฤติกรรมพื้นฐานของ replace() ที่ต้องจำให้ขึ้นใจครับ 😅
.
สังเกตว่า มันแทนที่เฉพาะคำว่า 'apple' ตัวแรกที่เจอเท่านั้น ส่วนคำว่า 'apple' ตัวที่สองที่อยู่หลัง banana ยังคงเป็น 'apple' อยู่เหมือนเดิม ไม่เปลี่ยนแปลง
.
💡 **Tip จากผม:** ถ้าต้องการแทนที่คำว่า 'apple' ทุกตัวที่พบ มีทางเลือก 2 วิธี:
• วิธีที่ 1: ใช้ replaceAll('apple', 'orange') แทน
• วิธีที่ 2: ใช้ replace(/apple/g, 'orange') โดยใส่ /g flag
.
ทั้ง 2 วิธีจะได้ผลลัพธ์เป็น 'orange banana orange cherry' ครับ 😎
n8n Code:

{{ 'apple banana apple cherry'.replace('apple', 'orange') }}

Result:

orange banana apple cherry

ตัวอย่างที่ 2: ลบ Prefix ใน n8n Workflow (Practical)
{{ $json.product_code.replace('SKU_', '') }}
สมมติว่าข้อมูลที่เข้ามาจาก previous node มีค่า $json.product_code = 'SKU_12345'
.
การแทนที่ 'SKU_' ด้วย empty string ('') จะทำให้คำนำหน้าถูกลบออกไป เหลือเฉพาะตัวเลข '12345' เท่านั้น
.
🔧 **ตัวอย่างการใช้งานจริง:**
.
**ขั้นตอนที่ 1:** Webhook node รับข้อมูล product code จาก external system ที่มาพร้อมคำนำหน้า 'SKU_'
.
**ขั้นตอนที่ 2:** ใช้ Set node กับ expression {{ $json.product_code.replace('SKU_', '') }} เพื่อลบคำนำหน้าออก
.
**ขั้นตอนที่ 3:** ส่งต่อเฉพาะตัวเลข product code ไปยัง HTTP Request node เพื่อเรียก API
.
💡 เทคนิคนี้ผมใช้บ่อยมากครับ เพราะข้อมูลที่เข้ามาจาก external system มักจะมี prefix หรือ suffix ที่ไม่ต้องการ ต้องทำความสะอาดก่อนส่งต่อเสมอ 😅
n8n Code:

{{ $json.product_code.replace('SKU_', '') }}

Result:

12345

ตัวอย่างที่ 3: ใช้ Regex กับ Capturing Groups (Advanced)
{{ $json.full_name.replace(/(\w+)\s(\w+)/, '$2, $1') }}
สมมติว่าข้อมูลที่เข้ามามีค่า $json.full_name = 'John Smith'
.
**มาดูว่า Regex ทำงานยังไง:**
.
Pattern /(\w+)\s(\w+)/ แบ่งออกเป็น 2 capturing groups:
• (\w+) = group แรก ($1) ใช้จับคำแรก → ได้ 'John'
• \s = space ระหว่างคำ
• (\w+) = group ที่สอง ($2) ใช้จับคำที่สอง → ได้ 'Smith'
.
**Replacement Pattern '$2, $1' หมายความว่า:**
.
นำ $2 (นามสกุล) มาวางก่อน → ตามด้วย comma และช่องว่าง → จบด้วย $1 (ชื่อ)
.
ได้ผลลัพธ์เป็น 'Smith, John' ซึ่งเป็นรูปแบบที่นิยมใช้ในระบบฐานข้อมูลหรือรายการที่เรียงตามตัวอักษร
.
💡 **ส่วนตัวผมคิดว่า** capturing groups ($1, $2, $3) เป็นเทคนิคที่ทรงพลังมากครับ ช่วยให้เราจัดเรียงข้อมูลใหม่หรือสลับลำดับได้โดยไม่ต้องมานั่ง split แล้ว concat หลายครั้ง เซฟเวลาเยอะเลย 😎
n8n Code:

{{ $json.full_name.replace(/(\w+)\s(\w+)/, '$2, $1') }}

Result:

Smith, John

ตัวอย่างที่ 4: Replace + Chain Methods ใน n8n Workflow (Real-World)
{{ $json.url.replace('http://', 'https://').replace(/\/api\/v1\//, '/api/v2/').trim() }}
สมมติว่าข้อมูล URL ที่เข้ามามีค่า $json.url = 'http://example.com/api/v1/users ' (สังเกตว่ามีช่องว่างต่อท้าย)
.
**มาดูว่า Chained Methods ทำงานทีละขั้นตอน:**
.
**ขั้นตอนที่ 1:** .replace('http://', 'https://')
→ แปลง protocol จาก HTTP เป็น HTTPS เพื่อความปลอดภัย
→ ได้ 'https://example.com/api/v1/users '
.
**ขั้นตอนที่ 2:** .replace(/\/api\/v1\//, '/api/v2/')
→ อัพเกรด API version จาก v1 เป็น v2 โดยใช้ regex
→ ได้ 'https://example.com/api/v2/users '
→ ⚠️ สังเกต: ต้อง escape เครื่องหมาย / ด้วย \\ ใน regex เป็น \\/
.
**ขั้นตอนที่ 3:** .trim()
→ ตัดช่องว่างที่ท้ายข้อความออก
→ ได้ผลลัพธ์สุดท้าย 'https://example.com/api/v2/users'
.
🔧 **สถานการณ์จริงที่ผมเจอ:**
.
HTTP Request node รับ URL จาก previous node → ใช้ Set node กับ expression ชุดนี้แก้ไข URL → ส่ง URL ที่สะอาดแล้วไปเรียก API ต่อ
.
💡 **ส่วนตัวผมชอบ** method chaining แบบนี้มากครับ เพราะทำให้แปลงข้อมูลหลายขั้นตอนใน expression เดียวได้เลย ไม่ต้องสร้าง Set node หลายตัว workflow ดูกระชับและอ่านง่ายขึ้นเยอะ 😎
n8n Code:

{{ $json.url.replace('http://', 'https://').replace(/\/api\/v1\//, '/api/v2/').trim() }}

Result:

https://example.com/api/v2/users

FAQs

replace() แทนที่เฉพาะตัวแรกจริงหรือ?

ใช่ครับ ถูกต้อง 100% 😅
.
เมื่อใช้ string literal เป็น searchValue มันจะแทนที่เฉพาะตัวแรกเท่านั้น
.
ตัวอย่าง: ‘aaa’.replace(‘a’, ‘b’) จะได้ ‘baa’ (แทนที่แค่ a ตัวแรก)
.
ถ้าต้องการแทนที่ทุกตัวมี 2 วิธี:
• วิธีที่ 1: ใช้ replaceAll() → ‘aaa’.replaceAll(‘a’, ‘b’) → ‘bbb’
• วิธีที่ 2: ใช้ regex กับ /g flag → ‘aaa’.replace(/a/g, ‘b’) → ‘bbb’
.
ส่วนตัวผมแนะนำให้ใช้ replaceAll() ตรงๆ จะอ่านง่ายกว่า แต่ถ้าต้องการความยืดหยุ่นมากกว่า (เช่น ignore case) ก็ใช้ regex ดีกว่าครับ 😎

replace() กับ replaceAll() ต่างกันอย่างไร?

นี่เป็นคำถามที่เจอบ่อยมากครับ 😅 มาดูความต่างกันแบบชัดๆ เลย:
.
**replace() – แทนที่เฉพาะตัวแรก**
‘cat cat cat’.replace(‘cat’, ‘dog’) → ‘dog cat cat’
.
**replaceAll() – แทนที่ทุกตัวที่พบ**
‘cat cat cat’.replaceAll(‘cat’, ‘dog’) → ‘dog dog dog’
.
**ถ้าใช้ regex กับ /g flag:**
‘cat cat cat’.replace(/cat/g, ‘dog’) → ‘dog dog dog’ (เหมือน replaceAll)
.
💡 **Tip:** ใช้ replace() เมื่อต้องการแทนที่เฉพาะตัวแรก เช่น ลบ prefix หรือแก้ไขครั้งเดียว ส่วน replaceAll() ใช้เมื่อต้องการแทนที่ทั้งหมด เช่น ลบ space หรือแก้ไข typo ทุกจุดในข้อความ

replace() รองรับ regex patterns หรือไม่?

รองรับเต็มที่เลยครับ 😎 replace() ใช้ได้ทั้ง string literal และ regex patterns:
.
**String Literal (แทนที่แค่ตัวแรก):**
$json.text.replace(‘old’, ‘new’)
.
**Regex Pattern (แทนที่ pattern ซับซ้อน):**
• $json.text.replace(/\d+/, ‘NUM’) → แทนที่ตัวเลขกลุ่มแรก
• $json.text.replace(/\s+/g, ‘ ‘) → แทนที่ช่องว่างหลายตัวเป็นช่องว่างเดียว
• $json.text.replace(/[aeiou]/gi, ‘*’) → แทนที่สระทั้งหมด
.
**Regex Flags ที่ใช้ได้:**
• /g = global (แทนที่ทุกตัว)
• /i = ignore case (ไม่สนใจตัวพิมพ์เล็กใหญ่)
• /m = multiline
.
💡 ส่วนตัวผมแนะนำให้ test regex pattern ก่อนใช้งานจริง ใช้เว็บ regex101.com ช่วยได้เยอะครับ จะได้ไม่ต้องมานั่งแก้ใน workflow แล้วเจอ error ทีหลัง 555

Capturing groups ($1, $2) ใน replace() ใช้ทำอะไรได้บ้าง?

นี่เป็นฟีเจอร์ที่เจ๋งมากครับ 😎 Capturing groups ใช้จับข้อมูลจาก regex แล้วนำกลับมาใช้ใน replacement string ได้:
.
**Special Patterns ที่ใช้ได้:**
• $1, $2, … $n = กลุ่มที่จับได้ (1st, 2nd, … nth group)
• $& = ข้อความที่ match ทั้งหมด
• $` = ข้อความก่อน match
• $’ = ข้อความหลัง match
.
**ตัวอย่างการใช้งานจริง:**
.
1️⃣ สลับลำดับคำ:
‘John Doe’.replace(/(\w+) (\w+)/, ‘$2, $1’) → ‘Doe, John’
.
2️⃣ Format เบอร์โทรศัพท์:
‘0812345678’.replace(/(\d{3})(\d{3})(\d{4})/, ‘$1-$2-$3’) → ‘081-234-5678’
.
3️⃣ Extract และจัดรูปแบบ:
‘Price: $100’.replace(/\$(\d+)/, ‘USD $1.00’) → ‘Price: USD 100.00’
.
💡 **ประสบการณ์ส่วนตัว:** ผมใช้เทคนิคนี้บ่อยมากครับ ช่วยแปลงข้อมูลได้โดยไม่ต้อง split แล้ว concat หลายครั้ง ทำให้ code สั้นลงและอ่านง่ายขึ้นเยอะเลย

ใช้ replace() ใน n8n workflow เมื่อไหร่?

จากประสบการณ์ผม replace() ใช้ได้ในหลายสถานการณ์ครับ มาดูตัวอย่างที่เจอบ่อยๆ:
.
**1️⃣ Data Cleaning:**
• ลบ prefix/suffix: $json.code.replace(‘PREFIX_’, ”)
• แก้ไข typo: $json.text.replace(‘teh’, ‘the’)
.
**2️⃣ URL/Path Transformation:**
• อัพเกรด protocol: $json.url.replace(‘http://’, ‘https://’)
• แก้ไข domain: $json.api_url.replace(‘staging.’, ‘production.’)
.
**3️⃣ Format Conversion:**
• เปลี่ยน date separator: $json.date.replace(‘/’, ‘-‘)
• แก้ไข line breaks: $json.text.replace(‘
‘, ‘
‘)
.
**4️⃣ Conditional Text:**
• ซ่อนข้อมูลส่วนบุคคล: $json.email.replace(/@.*/, ‘@***’)
• Mask credit card: $json.card.replace(/\d{12}/, ‘************’)
.
**ใช้ใน Node Types:**
• Set node → แปลงข้อมูลก่อนส่งต่อ
• IF node → เช็ค condition หลังแทนที่
• Code node → รวมกับ JavaScript logic อื่นๆ
.
💡 ส่วนตัวผมใช้ใน Set node บ่อยที่สุด เพราะง่ายและเห็นผลทันทีครับ 😎

Resources & Related

Additional Notes

replace() เป็น JavaScript string method มาตรฐานที่ใช้ได้ใน n8n expressions สำหรับแทนที่ข้อความหรือ regex pattern ตัวแรกที่พบใน string ด้วยข้อความใหม่ที่ระบุ
.
ที่ต้องจำให้ขึ้นใจคือ มันแทนที่แค่ตัวแรกที่เจอเท่านั้นนะครับ ถ้าต้องการแทนที่ทั้งหมด ต้องใช้ replaceAll() หรือ regex กับ /g flag แทน 😎
.
วิธีนี้เหมาะสำหรับการลบคำนำหน้าหรือคำต่อท้ายที่ไม่ต้องการ แก้ไขข้อผิดพลาดในข้อความ ปรับรูปแบบข้อมูลในตำแหน่งที่พบครั้งแรก และใช้แปลงข้อมูลก่อนส่งต่อไปยัง node ถัดไป
.
ที่เจ๋งคือมันรองรับทั้ง string literal และ regex pattern พร้อม capturing groups ($1, $2) ด้วย ทำให้สามารถจัดการข้อความที่ซับซ้อนได้ครับ 💡

Leave a Reply

Your email address will not be published. Required fields are marked *