Просто хочу узнать, как я могу сделать эту функцию более эффективной.
Я начинающий программист и создаю свое первое расширение для Chrome. Оно сканирует веб-страницы на наличие ISBN-13 и DOI и ищет на другом сайте, доступны ли они для скачивания. Однако специальные символы недопустимы, поэтому мне нужно удалить все “-“, которые часто встречаются. Это функция сопоставления / очистки.
Существует ли способ сделать это лучше? Вырезание “-” кажется особенно громоздким. Я знаю, как сделать это немного быстрее на Python, но я гораздо менее знаком с методами Javascript.
function isbn13extract(page) {
var isbn13pattern = /(978|979)[0-9|-]{10,11}/
var match = page.match(isbn13pattern)
matchout = match[0]
if(matchout[3] == "-")
matchout = matchout.substr(0,3) + matchout.substr(4,13)
console.log(matchout)
if (matchout != null) {
console.log("Вы сделали это, вот ISBN:", matchout)
return matchout
}
else {
console.log("Не удалось найти ISBN")
return(null)
}
}
Я пытался найти более простые методы для удаления определенных символов из строк в Javascript, но в основном получал довольно громоздкие ответы. Однако код в настоящее время работает, так что то, что я делаю, работает.
Ответ
Чтобы сделать функцию более эффективной и упростить процесс очистки строк, можно использовать методы работы со строками в JavaScript, такие как replace
, чтобы удалить все нежелательные символы, включая символы "-". Это делает ваш код более чистым и читаемым.
Вот улучшенная версия вашей функции, которая включает в себя оптимизацию:
function isbn13extract(page) {
// Определяем шаблон для поиска ISBN-13
var isbn13pattern = /(978|979)[0-9|-]{10,11}/;
var match = page.match(isbn13pattern); // Ищем совпадения
if (match) {
var matchout = match[0].replace(/-/g, ''); // Убираем все символы "-"
console.log(matchout); // Выводим очищенный ISBN на консоль
console.log("Вы сделали это, вот ISBN:", matchout);
return matchout; // Возвращаем очищенный ISBN
} else {
console.log("Не удалось найти ISBN"); // Сообщение, если ISBN не найден
return null; // Возвращаем null, если совпадений нет
}
}
Объяснение изменений:
-
Использование
replace
: Вместо того чтобы вручную проверять каждый символ в строке и удалять "-", мы используем методreplace
для удаления всех символов "-" сразу. Регулярное выражение/-/g
означает "найдите все символы ‘-‘, где ‘g’ означает глобальный режим". -
Проверка на наличие совпадения: Теперь мы возвращаем
null
, если совпадения не найдены, только после проверки. - Улучшенные сообщения: Выводим сообщения о результатах поиска на русском языке для большей ясности.
Такая реализация не только делает код более читаемым, но и повышает его производительность, ускоряя процесс очистки строк за счет оптимизированного метода.