Как сделать функцию очистки более эффективной?

Вопросы и ответы

Просто хочу узнать, как я могу сделать эту функцию более эффективной.

Я начинающий программист и создаю свое первое расширение для 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, если совпадений нет
    }
}

Объяснение изменений:

  1. Использование replace: Вместо того чтобы вручную проверять каждый символ в строке и удалять "-", мы используем метод replace для удаления всех символов "-" сразу. Регулярное выражение /-/g означает "найдите все символы ‘-‘, где ‘g’ означает глобальный режим".

  2. Проверка на наличие совпадения: Теперь мы возвращаем null, если совпадения не найдены, только после проверки.

  3. Улучшенные сообщения: Выводим сообщения о результатах поиска на русском языке для большей ясности.

Такая реализация не только делает код более читаемым, но и повышает его производительность, ускоряя процесс очистки строк за счет оптимизированного метода.

Оцените материал
Добавить комментарий

Капча загружается...