C:
การลบเครื่องหมายอัญประกาศออกจากสตริง
วิธีการ:
เพื่อลบเครื่องหมายอ้างอิงออกจากสตริงในภาษา C วิธีการคือเราจะท่องไปในสตริง คัดลอกอักขระที่ไม่ใช่เครื่องหมายอ้างอิงเข้าไปในสตริงใหม่ กระบวนการนี้สามารถปรับให้เหมาะสมได้เพื่อลบเฉพาะเครื่องหมายอ้างอิงที่อยู่ที่ปลายสุดและต้นของสตริงหรือลบเครื่องหมายอ้างอิงทั้งหมดที่ปรากฏในสตริง ด้านล่างคือตัวอย่างประกอบที่แสดงทั้งสองวิธีการ:
#include <stdio.h>
#include <string.h>
// ฟังก์ชันเพื่อลบเครื่องหมายอ้างอิงทั้งหมดออกจากสตริง
void removeAllQuotes(char *source, char *dest) {
while (*source) {
if (*source != '"' && *source != '\'') {
*dest++ = *source;
}
source++;
}
*dest = '\0'; // ทำให้สตริงปลายทางสิ้นสุดด้วย NULL
}
// ฟังก์ชันเพื่อลบเฉพาะเครื่องหมายอ้างอิงที่อยู่ที่ปลายและต้นสตริง
void removeEdgeQuotes(char *source, char *dest) {
size_t len = strlen(source);
if (source[0] == '"' || source[0] == '\'') source++, len--;
if (source[len-1] == '"' || source[len-1] == '\'') len--;
strncpy(dest, source, len);
dest[len] = '\0'; // ทำให้สตริงปลายทางสิ้นสุดด้วย NULL
}
int main() {
char str1[] = "'Hello, World!'";
char str2[] = "\"Programming in C\"";
char noQuotes1[50];
char noQuotes2[50];
removeAllQuotes(str1, noQuotes1);
printf("ลบเครื่องหมายอ้างอิงทั้งหมด: %s\n", noQuotes1);
removeEdgeQuotes(str2, noQuotes2);
printf("ลบเครื่องหมายอ้างอิงที่ขอบ: %s\n", noQuotes2);
return 0;
}
ผลลัพธ์ตัวอย่าง:
ลบเครื่องหมายอ้างอิงทั้งหมด: Hello, World!
ลบเครื่องหมายอ้างอิงที่ขอบ: Programming in C
ตัวอย่างเหล่านี้แสดงวิธีการจัดการกับการลบเครื่องหมายอ้างอิงทั้งหมดที่ปรากฏในสตริงและการลบที่เป้าหมายเฉพาะเครื่องหมายอ้างอิงที่ปลายและต้นของสตริง
การเจาะลึก
แนวคิดการลบเครื่องหมายอ้างอิงออกจากสตริงไม่ได้มีความลึกซึ้งในประวัติศาสตร์ของภาษา C มากนัก นอกเหนือจากความเกี่ยวข้องกับความต้องการการประมวลผลข้อความในช่วงต้น วิธีการที่ตรงไปตรงมาซึ่งแสดงอยู่ที่นี่มีความหลากหลายแต่อาจไม่มีประสิทธิภาพต่อสตริงขนาดใหญ่มากหรือความต้องการในด้านประสิทธิภาพสูง ที่อาจะต้องการการแก้ไขในที่หรืออัลกอริทึมที่ซับซ้อนกว่า
ทางเลือก เช่น การใช้ strpbrk
เพื่อค้นหาเครื่องหมายอ้างอิงและย้ายส่วนของสตริงที่ไม่ใช่เครื่องหมายอ้างอิงอาจมีประสิทธิภาพมากกว่า แต่ต้องการความเข้าใจที่ลึกซึ้งเกี่ยวกับตัวชี้และการจัดการหน่วยความจำในภาษา C นอกจากนี้ การเกิดขึ้นของไลบรารีสำหรับการจัดการสตริงด้วยการใช้ regular expression ได้ให้เครื่องมือที่มีประสิทธิภาพสำหรับการจัดการสตริง รวมถึงการลบเครื่องหมายอ้างอิง อย่างไรก็ตาม ไลบรารีเหล่านี้ แม้ว่าจะมีประสิทธิภาพ ก็เพิ่มความซับซ้อนและ overhead ที่อาจไม่จำเป็นสำหรับงานง่ายๆ ดังนั้น วิธีการตรงไปตรงมาเช่นที่แสดง ยังคงเป็นทักษะที่มีค่าสำหรับโปรแกรมเมอร์ภาษา C รวมความเรียบง่ายกับความมีประสิทธิภาพสำหรับการใช้งานในหลายกรณีทั่วไป