Я изучаю машинопись с нуля, делая упражнения на упражнения
Я успешно выполнил 5-е упражнение Панграммы
Мое решение, как показано ниже
class Pangram {
alphabet = "abcdefghijklmnopqrstuvwxyz"
constructor(private pangram:string) {
this.pangram = pangram.toLowerCase().normalize()
}
isPangram():boolean{
for( let leter of this.alphabet){
if(this.pangram.indexOf(leter) < 0) return false
}
return true;
}
}
export default Pangram
Чтобы стать лучше, я пытаюсь взглянуть на решение других, чтобы поучиться, и это привлекло мое внимание, так как я не настолько хорош в регулярных выражениях (пока)
class Pangram {
constructor(private text:string) {
}
isPangram():boolean {
var set = new Set(this.text.toLowerCase().replace(/[^A-Za-z]/g, ''))
return set.size == 26
}
}
export default Pangram
Я не очень хорошо себя чувствую, так как при первом прочтении я подумал, что это заменит все буквы в тексте на пустой символ, поэтому я подумал, что он проверит размер, равный нулю, почему, он проверяет до 26, как на самом деле это работает, Я не знаю, как отлаживать. У меня есть только тест, чтобы убедиться, что он работает нормально, а его решение работает очень хорошо
Пожалуйста, что на самом деле происходит во втором решении
Я добавляю использованный набор тестов для этого задания для любопытных читателей
import Pangram from './pangram'
describe('Pangram()', () => {
it('empty sentence', () => {
const pangram = new Pangram('')
expect(pangram.isPangram()).toBe(false)
})
it('pangram with only lower case', () => {
const pangram = new Pangram("the quick brown fox jumps over the lazy dog")
expect(pangram.isPangram()).toBe(true)
})
it("missing character 'x'", () => {
const pangram = new Pangram("a quick movement of the enemy will jeopardize five gunboats")
expect(pangram.isPangram()).toBe(false)
})
it("another missing character 'x'", () => {
const pangram = new Pangram("the quick brown fish jumps over the lazy dog")
expect(pangram.isPangram()).toBe(false)
})
it("pangram with underscores", () => {
const pangram = new Pangram("the_quick_brown_fox_jumps_over_the_lazy_dog")
expect(pangram.isPangram()).toBe(true)
})
it("pangram with numbers", () => {
const pangram = new Pangram("the 1 quick brown fox jumps over the 2 lazy dogs")
expect(pangram.isPangram()).toBe(true)
})
it('missing letters replaced by numbers', () => {
const pangram = new Pangram("7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog")
expect(pangram.isPangram()).toBe(false)
})
it('pangram with mixed case and punctuation', () => {
const pangram = new Pangram("\"Five quacking Zephyrs jolt my wax bed.\"")
expect(pangram.isPangram()).toBe(true)
})
it('pangram with non-ascii characters', () => {
const pangram = new Pangram("Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich.")
expect(pangram.isPangram()).toBe(true)
})
})
Спасибо