Ingat di sekolah dasar ketika guru Anda menunjukkan cara menulis makalah dengan benar?
Selama tantangan pembuatan skrip algoritme ini, kita akan mempelajari cara memberi judul huruf kapital pada kalimat dalam JavaScript. Pada akhirnya, kami akan membuat algoritme kami mengambil kalimat dan menggunakan huruf besar pada huruf pertama dari setiap kata seolah-olah itu adalah judul makalah
instruksi algoritma
Kembalikan string yang disediakan dengan huruf pertama dari setiap kata dengan huruf besar. Pastikan sisa kata dalam huruf kecil
Untuk tujuan latihan ini, Anda juga harus menggunakan huruf besar untuk menghubungkan kata-kata seperti "yang" dan "dari"
Kasus Uji yang Disediakan
titleCase["I'm a little tea pot"]
harus mengembalikan sebuah stringtitleCase["I'm a little tea pot"]
harus mengembalikanlet arrayOfNumbers = [3, 6, 10, 42, 98]
0
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]let arrayOfNumbers = [3, 6, 10, 42, 98]
1 harus mengembalikan
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]let arrayOfNumbers = [3, 6, 10, 42, 98]
2
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]let arrayOfNumbers = [3, 6, 10, 42, 98]
3 harus mengembalikan
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]let arrayOfNumbers = [3, 6, 10, 42, 98]
4
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]
PEDAC
Memahami Masalah. Kami memiliki satu input, sebuah string. Keluaran kita juga berupa string. Pada akhirnya, kami ingin mengembalikan string input dengan huruf pertama — dan hanya huruf pertama — dari setiap kata dengan huruf besar
Contoh/Uji Kasus. Kasus uji yang kami sediakan menunjukkan bahwa kami harus memiliki huruf kapital hanya di awal setiap kata. Kita perlu huruf kecil sisanya. Kasus uji yang disediakan juga menunjukkan bahwa kita tidak dilempar bola lengkung apa pun dalam bentuk kata majemuk aneh yang dipisahkan oleh simbol, bukan spasi. Itu kabar baik bagi kita
Struktur data. Kita harus mengubah string input kita menjadi sebuah array untuk memanipulasi setiap kata secara terpisah
Beberapa catatan tentang metode yang akan kami gunakan
Mari kita bicara tentang
let arrayOfNumbers = [3, 6, 10, 42, 98]
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]
5let arrayOfNumbers = [3, 6, 10, 42, 98]
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]
6 membuat array baru dengan hasil pemanggilan fungsi pada setiap elemen dalam arrayDengan kata lain,
let arrayOfNumbers = [3, 6, 10, 42, 98]
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]
_6 memungkinkan kita untuk memanipulasi setiap elemen dalam array dengan fungsi, lalu mengembalikan array baru dengan hasil manipulasi kita. Fungsi tersebut dapat menargetkan baik currentValue maupun indeks dari currentValue tersebut, seperti ituarray.map[[currentValue, Index] => {
// manipulate the currentValue in some way
}]
_Kita tidak selalu harus menggunakan Index. Akan ada saatnya, ketika kita perlu menargetkan elemen array berdasarkan indeksnya, jadi perlu diingat
Sekarang mari kita lihat contoh
let arrayOfNumbers = [3, 6, 10, 42, 98]
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]
6 beraksi. Kami memiliki array yang penuh dengan angka dan kami ingin mengalikan setiap angka dengan 2let arrayOfNumbers = [3, 6, 10, 42, 98]
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]
Sekarang mari selidiki
let arrayOfNumbers = [3, 6, 10, 42, 98]
arrayOfNumbers.map[number => number * 2]
// returns [6, 12, 20, 84, 196]
_9"Bastian".slice[]
// returns "Bastian"
0 mengekstrak bagian dari string dan mengembalikannya sebagai string baru. Jika Anda memanggil "Bastian".slice[]
// returns "Bastian"
0 pada sebuah string tanpa memberikannya informasi tambahan apa pun, itu akan mengembalikan seluruh string"Bastian".slice[]
// returns "Bastian"
Kami memiliki opsi untuk meneruskan
"Bastian".slice[]
// returns "Bastian"
0 beginIndex dan endIndex, seperti itu.slice[beginIndex, endIndex]
Ini memberi tahu
"Bastian".slice[]
// returns "Bastian"
_0 di mana harus memulai pemotongan dan di mana harus mengakhiri pemotongan. Perlu diingat bahwa string diindeks nol. Jadi jika kita ingin kembali dari huruf "Bastian" berindeks 2 sampai tetapi tidak termasuk huruf "Bastian" berindeks 5, kita dapat melakukan ini"Bastian".slice[2, 5]
// returns "sti"
Dengan mengingat hal itu, kita dapat memotong awal kata dan mengembalikan sisanya hanya dengan memasukkan beginIndex, seperti itu
"Bastian".slice[3]
// returns "tian"
Algoritma
- Ubah semua huruf dalam
"Bastian".slice[]
_4 menjadi huruf kecil
// returns "Bastian" - Pisahkan huruf kecil
"Bastian".slice[]
4 menjadi sebuah array, dengan setiap kata menjadi elemen terpisah dalam array
// returns "Bastian" - Gunakan huruf kapital untuk huruf pertama setiap elemen dalam larik
- Gabungkan setiap elemen array menjadi satu string, pisahkan setiap kata dengan spasi putih
- Kembalikan string dengan casing judul
Kode. Lihat di bawah
Saya membuat banyak variabel lokal yang tidak perlu pada kode di atas untuk menunjukkan efek dari setiap metode pada masukan. Di bawah ini saya telah menghapus variabel lokal, menggabungkan semua metode, dan menghapus komentar
Solusi #2. regexPeringatan. Regex bukanlah solusi terbaik untuk pemula. Ekspresi reguler itu sendiri sulit, dan kerumitannya merupakan keluhan umum bagi banyak pengembang berpengalaman. Tapi hei, saya merasa ingin bertualang saat menulis ini, dan saya suka menantang diri sendiri untuk lebih memahami regex kapan pun saya bisa. Tantangan pembuatan skrip algoritme ini sebenarnya cocok untuk regex, jadi mari kita lihat dan lihat apakah kita dapat meningkatkan pemahaman kita tentang regex
PEDAC
Memahami Masalah. Kami memiliki satu input, sebuah string. Keluaran kita juga berupa string. Pada akhirnya, kami ingin mengembalikan string input dengan huruf pertama — dan hanya huruf pertama — dari setiap kata dengan huruf besar
Contoh/Uji Kasus. Kasus uji yang kami sediakan menunjukkan bahwa kami harus memiliki huruf kapital hanya di awal setiap kata. Kita perlu huruf kecil sisanya. Kasus uji yang disediakan juga menunjukkan bahwa kita tidak dilempar bola lengkung apa pun dalam bentuk kata majemuk aneh yang dipisahkan oleh simbol, bukan spasi. Itu kabar baik bagi kita
Struktur data. Kami tidak akan mengubah string kami menjadi array saat menggunakan ekspresi reguler. JavaScript memiliki metode bagus
"Bastian".slice[]
// returns "Bastian"
_6 yang memungkinkan kita menargetkan hampir semua hal yang kita inginkan dalam sebuah string dan menggantinya dengan sesuatu yang lain. Kami menggunakan ekspresi reguler untuk menargetkan apa yang ingin kami gantiAda begitu banyak simbol yang digunakan dalam ekspresi reguler sehingga saya tidak dapat berharap untuk memberikan tinjauan luas tentangnya di sini. Saya dapat mengarahkan Anda ke lembar contekan ini, yang saya gunakan setiap kali saya harus menggunakan regex
Yang bisa saya lakukan adalah memberi tahu Anda bahwa regex dengan
"Bastian".slice[]
// returns "Bastian"
7 dalam JavaScript mengikuti pola dasar. "Bastian".slice[]
// returns "Bastian"
7 mengambil dua argumen. pola [biasanya ekspresi reguler] dan pengganti [bisa berupa string atau fungsi]string.replace[regex, function]
Dalam solusi kami, kami akan mengganti huruf di awal setiap kata. Bagaimana kita mendapatkan regex untuk melakukan ini untuk kita?
Mari uraikan bagian regex dari solusi kita. Untuk melakukannya, mari kita lihat argumen pertama dari fungsi
"Bastian".slice[]
// returns "Bastian"
7. Ini adalah kode regex yang menentukan pola apa yang ingin kita cocokkan dan ganti// full solution:function titleCase[str] {
return str.toLowerCase[].replace[/[^|\s]\S/g,
[firstLetter] => firstLetter.toUpperCase[]];
}
Kami pada akhirnya ingin menemukan semua karakter non-spasi putih, yang diwakili oleh
.slice[beginIndex, endIndex]
1Kemudian kami ingin menentukan bahwa kami ingin mencocokkan karakter non-spasi putih tersebut di awal string
.slice[beginIndex, endIndex]
2 atau .slice[beginIndex, endIndex]
3 setelah karakter spasi apa pun .slice[beginIndex, endIndex]
4Kami menambahkan pengubah global
.slice[beginIndex, endIndex]
_5 untuk mencari dan mengganti semua pola tersebut di seluruh string