Как выделить иностранные слова в html файле с помощью скрипта
Перевожу иностранную книгу по программированию на Java. Результат оформляю в файл html, чтобы можно было добавить туда картинки, код, выделить код в отдельные фрагменты и т. д. Идея не новая. В тексте много иностранных терминов. Я их хочу выделить, скажем, тегами <b> или <span> со стилем. Но выделять вручную неудобно да и утомительно. Можно ли написать скрипт, выделяющий иностранные слова определенным тегом?
|
выделение слов в тексте
IamAnton,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.br {
text-decoration: underline;
color: #0000FF;
}
</style>
</head>
<body>
<div class="content">
Как выделить иностранные слова в html файле с помощью скрипта Перевожу иностранную книгу по программированию на Java. Результат оформляю в файл html, чтобы можно было добавить туда картинки, код, выделить код в отдельные фрагменты и т. д. Идея не новая.
В тексте много иностранных терминов. Я их хочу выделить, скажем, тегами <b> или <span> со стилем. Но выделять вручную неудобно да и утомительно. Можно ли написать скрипт, выделяющий иностранные слова определенным тегом?
</div>
<script>
window.addEventListener('load', function() {
const replacing = elem => {
for (let node, textNodes = document.createTreeWalker(elem, NodeFilter.SHOW_TEXT, null, false); node = textNodes.nextNode();) {
let html = node.nodeValue.replace(/([a-z]+)/gi, '<span class="br">$1</span>');
let div = document.createElement('div');
div.innerHTML = html;
node.replaceWith(...div.childNodes)
}
}
let elem = document.querySelector(".content");
replacing(elem);
})
</script>
</body>
</html>
|
рони,
Благодарю! Хотя я лично многое из этого не понял. |
рони,
И правда работает. Благодарю, добрый человек. Хотя некоторые вещи мне в этом коде незнакомы.:( |
Хреновый код. Он берёт тест, а вставляет html. Если там будет < или > - всё сломается.
|
Цитата:
|
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.br {
text-decoration: underline;
color: #0000FF;
}
</style>
</head>
<body>
<div class="content">
Комметарии в html коде выглядят так: <!-- comment -->.
</div>
<script>
window.addEventListener('load', function() {
const replacing = elem => {
for (let node, textNodes = document.createTreeWalker(elem, NodeFilter.SHOW_TEXT, null, false); node = textNodes.nextNode();) {
let html = node.nodeValue.replace(/([a-z]+)/gi, '<span class="br">$1</span>');
let div = document.createElement('div');
div.innerHTML = html;
node.replaceWith(...div.childNodes)
}
}
let elem = document.querySelector(".content");
replacing(elem);
})
</script>
</body>
|
Aetae,
спасибо за науку. :thanks: |
:) как-то так ...
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.br {
text-decoration: underline;
color: #0000FF;
}
</style>
</head>
<body>
<div class="content">
Комметарии в html коде выглядят так: <!-- comment -->.
</div>
<script>
window.addEventListener('load', function() {
const replacing = elem => {
let span = document.createElement('span');
span.className = 'br';
let range = new Range();
let textNodes = document.createTreeWalker(elem, NodeFilter.SHOW_TEXT, null, false);
const nodeList = [];
let txtNode = textNodes.nextNode();
while (txtNode) {
nodeList.push(txtNode);
txtNode = textNodes.nextNode();
}
for (let node of nodeList) {
let reg = /([a-z]+)/gi;
let search;
while ((search = reg.exec(node.nodeValue)) != null) {
let txt = search[0],
start = search.index,
end = start + txt.length;
let clone = span.cloneNode(true);
range.setStart(node, start);
range.setEnd(node, end);
range.surroundContents(clone);
reg.lastIndex = 0;
node = clone.nextSibling;
};
}
}
let elem = document.querySelector(".content");
replacing(elem);
})
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 02:33. |