
מבוא למחרוזות
מחרוזות הן רצפים של תווים המשמשים לייצוג טקסט. הן יכולות לכלול אותיות, מספרים, סמלים ורווחים לבנים. מחרוזות חיוניות לטיפול בנתונים מבוססי טקסט, כגון קלט משתמש, תוכן קבצים ותקשורת בין רכיבי תוכנה.
הבנת מחרוזות היא בסיסית לתכנות, מכיוון שהן נמצאות בשימוש נרחב כמעט בכל יישום.
משתמשים במחרוזות בהקשרים שונים בתכנות, כולל:
- קלט משתמש - לכידת טקסט שהוזן על ידי משתמשים.
- טיפול בקבצים - קריאה וכתיבה של קבצי טקסט.
- סידור נתונים - המרת נתונים לפורמט מחרוזת לאחסון או שידור.
- עיבוד טקסט - מניפולציה וניתוח טקסט עבור יישומים שונים.
סימון ויצירת מחרוזות
דרך סימון המחרוזות מכונה String Literals. ברוב שפות התכנות, כולל JavaScript ו-PHP, מחרוזות מסומנות באמצעות הקפה של המחרוזת במירכאות בודדות או במירכאות כפולות. קיימות שפות תכנות בהן ניתן לסמן מחרוזות גם באמצעות backticks (גירשיים הפוכים).
נציג להלן הגדרה של מחרוזות בג'אווה סקריפט וב-PHP.
דוגמה בג'אווה סקריפט:
let singleQuoteLiteral = 'This is a string literal';
let doubleQuoteLiteral = "This is also a string literal";
let templateLiteral = `This is a template literal`;
דוגמה ב-PHP:
$singleQuoteLiteral = 'This is a string literal';
$doubleQuoteLiteral = "This is also a string literal";
מאפייני מחרוזת
למחרוזות מספר מאפיינים המגדירים את ההתנהגות והיכולת שלהן. בין המאפיינים המרכזיים ניתן למצוא את אורך המחרוזת, אופן הגישה לתווים ועקרון אי-השינוי (immutability).
נסקור להלן מאפיינים אלו עם דוגמאות בג'אווה סקריפט וב-PHP.
אורך המחרוזת
אורך המחרוזת מתייחס למספר התווים שהמחרוזת מכילה. זהו מאפיין בסיסי שנמצא בשימוש לעתים קרובות, כדי לקבוע את גודל המחרוזת ולמטרות איטרציה (מעבר סדרתי על תווי המחרוזת תו אחר תו).
ב-JavaScript, ניתן לקבל את האורך של מחרוזת באמצעות המאפיין length.
דוגמה בג'אווה סקריפט:
let str = "Hello, world!";
console.log(str.length); // Output: 13
ב-PHP, ניתן להשתמש בפונקצייה strlen לקבלת אורך המחרוזת.
דוגמה ב-PHP:
$str = "Hello, world!";
echo strlen($str); // Output: 13
גישה לתווים במחרוזת
גישת לתווים מאפשרת לאחזר תווים בודדים ממחרוזת על סמך מיקומם (אינדקס התו במחרוזת). ברוב שפות התכנות, אינדקס התו הראשון הוא אפס ולא אחד.
ב-JavaScript, ניתן יכול לגשת לתווים באמצעות סוגריים מרובעים [] או באמצעות המתודה charAt.
דוגמה בג'אווה סקריפט:
let str = "Hello, world!";
console.log(str[0]); // Output: H
console.log(str.charAt(0)); // Output: H
ב-PHP, ניתן לגשת לתווים באמצעות סוגריים מרובעים []. בגירסאות PHP ישנות ניתן היה לגשת לתווים גם באמצעות סוגריים מסולסלים {}, אך שיטה זו פחות נפוצה וכבר אינה נתמכת.
דוגמה ב-PHP:
$str = "Hello, world!";
echo $str[0]; // Output: H
echo $str{0}; // Output: H (Deprecated in PHP 7.4+)
עקרון אי שינוי מחרוזות
בשפות תכנות רבות, מחרוזות אינן ניתנות לשינוי. כלומר ברגע שנוצרת מחרוזת, לא ניתן לשנות אותה. הסיבה לכך, היא אופן הקצאת המקום הפנוי בזכרון עבור המחרוזת.
למעשה, כל פעולה שנראית כמשנה מחרוזת, יוצרת ומחזירה מחרוזת חדשה עם התוכן שהשתנה.
למרות שאופן הטיפול במחרוזות מעט שונה בג'אווה סקריפט וב-PHP, בשתי השפות העקרון נשמר, וכך גם בשפות תכנות רבות אחרות.
דוגמה בג'אווה סקריפט:
let originalString = "Hello";
let newString = originalString.concat(", world!"); // originalString remains unchanged
דוגמה ב-PHP:
$originalString = "Hello";
$newString = $originalString . ", world!"; // $originalString remains unchanged
ייצוג מחרוזת
ניתן לייצג מחרוזות בדרכים שונות, בהתאם לשפת התכנות ולתכונותיה.
ייצוגים נפוצים כוללים שימוש בטקסט פשוט, שימוש בתקן Unicode ושימוש ברצפים עם קו נטוי (Escape Sequences).
נסקור להלן ייצוגים אלו עם דוגמאות בג'אווה סקריפט וב-PHP.
טקסט רגיל
טקסט רגיל הוא הייצוג הפשוט ביותר של מחרוזות, המורכב מתווים רגילים ללא כל עיצוב מיוחד.
דוגמה בג'אווה סקריפט:
let plainText = "Hello, world!";
console.log(plainText); // Output: Hello, world!
דוגמה ב-PHP:
$plainText = "Hello, world!";
echo $plainText; // Output: Hello, world!
תקן Unicode
Unicode הוא תקן לייצוג מגוון עצום של תווים ממערכות כתיבה שונות. ניתן לכלול תווי Unicode ישירות במחרוזות או לייצג את התווים באמצעות קוד מזהה ייחודי.
ב-JavaScript, ניתן לכלול תווי Unicode ישירות או להשתמש ברצפים עם קו נטוי. הרצפים מסמלים את התו אותו רוצים להציג.
דוגמה בג'אווה סקריפט:
let unicodeText = "Hello, world! こんにちは";
let unicodeEscape = "Hello, world! \u3053\u3093\u306B\u3061\u306F";
console.log(unicodeText); // Output: Hello, world! こんにちは
console.log(unicodeEscape); // Output: Hello, world! こんにちは
ב-PHP, ניתן יכול לכלול תווי Unicode ישירות במחרוזות, בהנחה שקידוד הקובץ תומך בכך (למשל, UTF-8).
דוגמה ב-PHP:
$unicodeText = "Hello, world! こんにちは";
$unicodeEscape = "Hello, world! \u{3053}\u{3093}\u{306B}\u{3061}\u{306F}";
echo $unicodeText; // Output: Hello, world! こんにちは
echo $unicodeEscape; // Output: Hello, world! こんにちは
רצפים עם קו נטוי
רצפים עם קו נטוי (Escape Sequences) משמשים לייצוג תווים מיוחדים במחרוזות, כגון שורות חדשות, טאבים ומרכאות.
ניתן לעשות שימוש ברצפים עם קו נטוי שימוש להצגת תווים ב-Unicode, כפי שראינו קודם, אך לא רק.
רצפים נפוצים כוללים n\ עבור שורה חדשה, t\ עבור Tab ו- "\ עבור מרכאות כפולות. הדבר דומה בג'אווה סקריפט, ב-PHP ובשפות תכנות רבות נוספות.
דוגמה בג'אווה סקריפט:
let escapeSequence = "Hello,\nworld!\tThis is a \"quoted\" word.";
console.log(escapeSequence);
// Output:
// Hello,
// world! This is a "quoted" word.
דוגמה ב-PHP:
$escapeSequence = "Hello,\nworld!\tThis is a \"quoted\" word.";
echo $escapeSequence;
// Output:
// Hello,
// world! This is a "quoted" word.
קידוד מחרוזת
קידוד מחרוזת מתייחס לאופן שבו תווים מיוצגים בזיכרון.
קידודים נפוצים כוללים:
- ASCII - תקן קידוד של 7 סיביות עבור תווים באנגלית.
- UTF-8 - קידוד ברוחב משתנה שיכול לייצג כל תו בערכת התווים של Unicode.
- UTF-16 - קידוד של 16 סיביות התומך גם בכל מגוון תווי Unicode.
הקידוד חיוני כדי להבטיח שהטקסט מוצג ומתפרש בצורה נכונה במערכות שונות.
מחרוזות לסיכום
מחרוזות הן חלק חיוני בתכנות, המאפשרות למפתחים לטפל ולתפעל טקסט ביעילות. הבנת המאפיינים, אופן היצירה והייצוג של מחרוזות חיונית לכתיבת קוד יעיל וחזק. בין אם אתה עובד ב-JavaScript, PHP או כל שפה אחרת, הבנה טובה של מחרוזות תשפר משמעותית את כישורי התכנות שלך.