ภาพรวม
Snake Case คือรูปแบบการเขียนสตริงโดยแทนที่ช่องว่างด้วย underscore (_) และทำให้ตัวอักษรทั้งหมดเป็นตัวพิมพ์เล็ก (Lowercase) เช่น 'This is a test' -> 'this_is_a_test'
การนำไปใช้
const toSnakeCase = (str = '') => {
return str.split(' ')
.map(word => word.toLowerCase())
.join('_');
};
console.log(toSnakeCase('This is a simple sentence'));
// this_is_a_simple_sentence
ผลลัพธ์
this_is_a_simple_sentence
วิธีการทันสมัยและครอบคลุมมากกว่า
// รองรับ PascalCase, camelCase, kebab-case, spaces ทั้งหมด
const toSnakeCaseRobust = (str) =>
str
// แทนที่ตัวใหญ่ที่ตามมาหลังตัวเล็ก ด้วย _ + ตัวเล็ก
.replace(/([a-z])([A-Z])/g, '$1_$2')
// แทนที่ Space, Hyphen, Dot ด้วย _
.replace(/[\s\-\.]+/g, '_')
// ตัด _ นำหน้า/ท้าย
.replace(/^_+|_+$/g, '')
.toLowerCase();
// ทดสอบ
console.log(toSnakeCaseRobust('ThisIsATest')); // this_is_a_test
console.log(toSnakeCaseRobust('this-is-a-test')); // this_is_a_test
console.log(toSnakeCaseRobust('This Is A Test')); // this_is_a_test
console.log(toSnakeCaseRobust('this.is.a.test')); // this_is_a_test
console.log(toSnakeCaseRobust(' This Is Test ')); // this_is_test
รูปแบบ Naming Conventions เปรียบเทียบ
| Style | Example | Use Case |
|---|---|---|
| snake_case | user_name | Python, Ruby, SQL, CSS |
| camelCase | userName | JavaScript, Java, TypeScript |
| PascalCase | UserName | Class Names, Components |
| kebab-case | user-name | URLs, CSS Classes, HTML IDs |
| SCREAMING_SNAKE | USER_NAME | Constants, Env Variables |
ฟังก์ชันแปลงรูปแบบครบชุด
const changeCase = {
snake: (s) => s.replace(/([a-z])([A-Z])/g, '$1_$2').replace(/[\s\-\.]+/g, '_').toLowerCase(),
camel: (s) => s.replace(/([-_ ])([a-z])/g, (_, __, c) => c.toUpperCase()).replace(/^[A-Z]/, c => c.toLowerCase()),
pascal: (s) => s.replace(/([-_ ])([a-z])/g, (_, __, c) => c.toUpperCase()).replace(/^[a-z]/, c => c.toUpperCase()),
kebab: (s) => s.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/[\s_\.]+/g, '-').toLowerCase(),
constant: (s) => s.replace(/([a-z])([A-Z])/g, '$1_$2').replace(/[\s\-\.]+/g, '_').toUpperCase(),
};
การประยุกต์ใช้
- Code Generation: สร้าง Variable Names อัตโนมัติ
- Database: แปลง Column Names ระหว่าง Convention
- API: แปลง Request/Response Keys
- File Naming: Normalize Filenames