Я написал эту функцию для удаления знаков препинания. Я все протестировал, и проблема, похоже, в том, что переменная firstIndex не увеличивается на 1 в каждом цикле.
Я попытался увеличить firstIndex с помощью оператора приращения, но эта переменная увеличивается только один раз и достигает максимального значения в 1. Я действительно не знаю, как это исправить.
const textInput = "Hello world!"
const insensitiveText = textInput.toLocaleLowerCase();
const letters = insensitiveText.split("");
const removePunctuation = (letters) =>{
const tempArray = new Array();
for( const i in letters){
var firstIndex = 0;
if (letters[i].charCodeAt() > 96 && letters[i].charCodeAt() < 123){ // This loop succeeded in removePunctuation;
tempArray[firstIndex] = letters[i];
firstIndex = firstIndex + 1;
}
}
return(tempArray);
}
Во-первых, в переменной нет никакого смысла. Просто сделай tempArray.push(letters[i])
Было бы действительно более эффективно использовать регулярное выражение для удаления символов.
Большое спасибо, я новичок в программировании, поэтому буду очень признателен за любые комментарии!
Одна из первых вещей, которую нужно изучить, и один из самых важных инструментов для разработчика — это отладчик. Это отличный повод узнать, как это работает и как найти проблему самостоятельно. Запустите код в отладчике и просматривайте его построчно. Анализируйте значения и ищите неожиданное поведение. Вы должны сразу понять, почему firstIndex
чередуется только между 0
и 1
.
Вы должны использовать регулярное выражение
const text = 'Hello, how are you ?!'
const textWithoutPunctuation = text.replace(/[.,/#!$%\^&\*;:{}=\-_`~()]/g, "") //Hello how are you
Регулярные выражения действительно мощные, я рекомендую вам взглянуть на них.
выйти
var firstIndex = 0;
за пределы цикла