Algorytmika: Zamiana Wielkości Liter
Zadanie 3.8: Zamiana Wielkości Liter (Swap Case)
Wstęp
Wyobraź sobie, że piszesz system, który musi naprawić tekst wpisany przez użytkownika z wciśniętym klawiszem CapsLock, albo chcesz stworzyć efekt "Spongebob meme" (tAkIe PiSaNiE). Aby to zrobić, musisz umieć kontrolować wielkość liter każdego znaku z osobna.
Cel zadania
Napisanie funkcji w JavaScript, która przyjmie tekst i zwróci go z odwróconą wielkością liter (małe -> duże, duże -> małe).
Wymagania techniczne
- Funkcja: Stwórz funkcję o nazwie
swapCase(text). - Logika: Iteracja po każdym znaku stringa.
- Sprawdzanie: Wykrywanie czy znak jest duży czy mały.
- Wynik: Zwrócenie nowego stringa (pamiętaj, że stringi w JS są niemutowalne!).
Kroki do wykonania
1. Przygotowanie pliku
Stwórz plik script.js i przygotuj szkielet funkcji.
function swapCase(text) {
let result = "";
// Tutaj wpiszemy logikę
return result;
}
// Testy
console.log(swapCase("Hello World")); // Oczekiwane: hELLO wORLD
console.log(swapCase("JavaScript")); // Oczekiwane: jAVAsCRIPT
2. Iteracja po tekście
W JavaScript string to tablica znaków (prawie). Możesz użyć pętli for lub metody split(). Użyjmy klasycznej pętli for...of dla czytelności.
for (const char of text) {
// console.log(char); // Sprawdź czy działa
}
3. Logika zamiany
Dla każdego znaku musisz sprawdzić: "Czy jesteś dużą literą?". Jeśli tak, zamień na małą. W przeciwnym razie zamień na dużą.
[!TIP] Jak sprawdzić czy litera jest duża? Porównaj ją z jej wersją
.toUpperCase().if (char === char.toUpperCase()) { ... }Uwaga: Znaki specjalne (np. " ", "1", "!") też są "równe" swojej dużej wersji, więc ten warunek "zamieni" je na małe (co dla znaków specjalnych nic nie zmieni, czyli jest OK).
/* Wewnątrz pętli */
if (char === char.toUpperCase()) {
// Jest duża (lub to znak specjalny), więc zamień na małą
result += char.toLowerCase();
} else {
// Jest mała, zamień na dużą
result += char.toUpperCase();
}
4. Wersja "Pro" (Dla chętnych)
Spróbuj zapisać tę funkcję w jednej linijce używając .split(), .map() i operatora trójelementowego (? :).
const swapCasePro = (text) => {
return text
.split('')
.map(c => c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase())
.join('');
}
console.log(swapCasePro("Tarnobrzeg"));
[!IMPORTANT] Commit: Rozwiązanie zadania swapCase.
Testowanie
Uruchom kod w konsoli przeglądarki lub używając Node.js:
node script.js
Upewnij się, że działa poprawnie dla zdań z polskimi znakami, np. "Żółta Łódź".