Получить строку между статическим шаблоном в HTML

скрипт, который извлечет строку между определенным шаблоном в файле HTML.

Пример: предположим, если в тексте HTML есть:

<p translate = "index_word1" > </p>

Результат должен быть: index_word1

В основном нужна строка между translate = "эта строка".

Извините, но вам нужно сначала показать нам, что вы пробовали, опубликуйте свой минимальный воспроизводимый пример и объясните, с какой проблемой вы столкнулись в своей реализации.

Esko 19.09.2018 08:15

Я предполагаю, что последовательный понижающий голос вызван тем, что ни один из ответов не «читает файл» - вы, по сути, задали два вопроса: «как читать файл», «как разбирать строку» - все ответили на единственный разумный вопрос. Другой - огромный риск для безопасности (при условии, что клиент js, а не node.js, которого не было в тегах).

freedomn-m 19.09.2018 08:50

все ответы ниже работают в соответствии с требованиями, поэтому я поддержал рабочие ответы. но дали принятый ответ на оптимизированный код.

Neeraj Kamat 19.09.2018 08:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
3
71
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать DOMParser для преобразования строки в документ, после чего вы можете querySelectorAll поверх него, чтобы найти элементы с атрибутами translate:

const str = `<p translate = "index_word1" > </p>
<strong translate = "index_word2"></strong>`;
new DOMParser()
  .parseFromString(str, 'text/html')
  .querySelectorAll('[translate]')
  .forEach(element => console.info(element.getAttribute('translate')));

Это сработало, как требовалось, спасибо

Neeraj Kamat 19.09.2018 08:30

В вашем случае ваш матч будет m[1]

const regex = /translate = "(.+)"/gm;
const str = `<p translate = "index_word1" > </>
<strong translate = "index_word2"></strong>`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.info(`Found match, group ${groupIndex}: ${match}`);
    });
    // Your case
    console.info(`Your case: ${m[1]}`)
}

работает согласно требованию вопроса. Благодарность

Neeraj Kamat 19.09.2018 08:55

Вы можете использовать карту для извлечения атрибутов translate:

$("[translate]").map(function(i, el) { return $(this).attr("translate"); }

Пример чтения из строки:

var s = '<p translate = "index_word1"><p/><strong translate = "index_word2"></strong>';

var html = $("<div>").append(s);
var arr = $("[translate]", html).map(function(i, el) { return $(this).attr("translate"); }).toArray();
console.info(arr);

$.each(arr, function(i) { $("#out").append(arr[i] + "<br/>"); });
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id = "out"></div>

работает согласно требованию вопроса. Благодарность

Neeraj Kamat 19.09.2018 08:55

Другие вопросы по теме