2.8 מחרוזות תרגול
תרגול מחרוזות¶
תרגיל 1 - עיבוד מחרוזות בסיסי¶
כתבו פונקציות לכל אחד מהבאים:
capitalize(str)- מחזירה את המחרוזת כשהאות הראשונה גדולה והשאר קטנות:
countChar(str, char)- סופרת כמה פעמים תו מסוים מופיע במחרוזת:
reverseString(str)- הופכת מחרוזת:
isPalindrome(str)- בודקת אם מחרוזת היא פלינדרום (מתעלמת מרווחים ומרישיות):
removeVowels(str)- מסירה את כל התנועות (a, e, i, o, u):
תרגיל 2 - Template Literals¶
- כתבו פונקציה
createEmailTemplate(name, product, price)שמחזירה תבנית אימייל:
createEmailTemplate("Alice", "Laptop", 5000);
// returns:
// "Dear Alice,
//
// Thank you for purchasing Laptop.
// Your total is: $5,000.00
//
// Best regards,
// The Store"
השתמשו ב-template literals עם מרובה שורות.
- כתבו פונקציה
createHTMLCard(title, description, imageUrl)שמחזירה HTML של כרטיס:
createHTMLCard("JavaScript", "The best language", "js.png");
// returns:
// <div class="card">
// <img src="js.png" alt="JavaScript">
// <h2>JavaScript</h2>
// <p>The best language</p>
// </div>
תרגיל 3 - ניתוח ועיצוב¶
- כתבו פונקציה
formatPhoneNumber(phone)שמקבלת מספר טלפון בפורמט כלשהו ומחזירה אותו בפורמט אחיד:
formatPhoneNumber("0501234567"); // "050-123-4567"
formatPhoneNumber("050-1234567"); // "050-123-4567"
formatPhoneNumber("050 123 4567"); // "050-123-4567"
- כתבו פונקציה
extractDomain(email)שמחלצת את הדומיין מכתובת אימייל:
extractDomain("alice@gmail.com"); // "gmail.com"
extractDomain("bob@company.co.il"); // "company.co.il"
- כתבו פונקציה
maskCreditCard(number)שמסתירה את רוב הספרות:
תרגיל 4 - מניפולציות מתקדמות¶
- כתבו פונקציה
toCamelCase(str)שממירה מחרוזת ל-camelCase:
toCamelCase("hello world"); // "helloWorld"
toCamelCase("background-color"); // "backgroundColor"
toCamelCase("font_size"); // "fontSize"
- כתבו פונקציה
toSnakeCase(str)שממירה ל-snake_case:
toSnakeCase("Hello World"); // "hello_world"
toSnakeCase("backgroundColor"); // "background_color"
toSnakeCase("fontSize"); // "font_size"
- כתבו פונקציה
toTitleCase(str)שהופכת כל מילה להתחיל באות גדולה:
תרגיל 5 - CSV Parser¶
כתבו פונקציה parseCSV(csvString) שמקבלת מחרוזת CSV ומחזירה מערך של אובייקטים.
השורה הראשונה היא שמות העמודות:
const csv = `name,age,city
Alice,25,Tel Aviv
Bob,30,Jerusalem
Charlie,35,Haifa`;
parseCSV(csv);
// [
// { name: "Alice", age: "25", city: "Tel Aviv" },
// { name: "Bob", age: "30", city: "Jerusalem" },
// { name: "Charlie", age: "35", city: "Haifa" }
// ]
בונוס: כתבו גם פונקציה הפוכה toCSV(arrayOfObjects) שממירה מערך של אובייקטים חזרה למחרוזת CSV.
תרגיל 6 - מנוע חיפוש פשוט¶
כתבו פונקציה search(text, query) שמקבלת טקסט ומילת חיפוש ומחזירה:
- כמה פעמים המילה מופיעה
- את המיקומים (אינדקסים) של כל ההופעות
- את המשפט שבו כל הופעה נמצאת
const text = "JavaScript is great. I love JavaScript. JavaScript is everywhere.";
search(text, "JavaScript");
// {
// count: 3,
// positions: [0, 27, 40],
// contexts: [
// "JavaScript is great.",
// "I love JavaScript.",
// "JavaScript is everywhere."
// ]
// }
החיפוש צריך להיות case-insensitive.
תרגיל 7 - מחולל סיסמאות¶
כתבו פונקציה generatePassword(length, options) שמחוללת סיסמה אקראית.
generatePassword(12, { uppercase: true, lowercase: true, numbers: true, symbols: true });
// "aB3$kL9#mN2!" (random)
generatePassword(8, { uppercase: true, lowercase: true, numbers: true, symbols: false });
// "aB3kL9mN" (random, no symbols)
generatePassword(4, { uppercase: false, lowercase: false, numbers: true, symbols: false });
// "7392" (random, numbers only)
בונוס: כתבו גם פונקציה checkPasswordStrength(password) שמחזירה "weak", "medium" או "strong":
- weak - רק אותיות קטנות, או פחות מ-6 תווים
- medium - מכילה אותיות גדולות וקטנות ומספרים, לפחות 8 תווים
- strong - מכילה אותיות, מספרים ותווים מיוחדים, לפחות 12 תווים
תרגיל 8 - עיבוד URL¶
כתבו פונקציות לעבודה עם כתובות URL:
parseURL(url)- מפרקת URL לרכיבים:
parseURL("https://www.example.com:8080/path/to/page?name=alice&age=25#section1");
// {
// protocol: "https",
// host: "www.example.com",
// port: "8080",
// path: "/path/to/page",
// query: { name: "alice", age: "25" },
// hash: "section1"
// }
buildURL(base, params)- בונה URL מבסיס ופרמטרים:
buildURL("https://api.example.com/search", { q: "javascript", page: 1, limit: 10 });
// "https://api.example.com/search?q=javascript&page=1&limit=10"
רמז: השתמשו ב-split כדי לפרק את ה-URL.