В комментариях вы сказали:
Может быть, решение с Javascript тогда ...?
Я получаю в виде строки, а затем создать отметку и установить innerhtm
Первоначально мое решение (под строкой ниже) состояло в том, чтобы просто удалить их при получении, но вы сказали, что вы должны сохранить их в HTML.
Итак, вы заключаете их ввстроенный элемент и скрыть их, например:
mark.innerHTML = theString.replace(/</g, "<")
.replace(/&/g, "&")
.replace(/^@@|@@$/g, "<span class=at>$&</span>");
(Первые две замены должны пометить <
и &
, чтобы мы могли использовать innerHTML
. Удалите их, если строка означало иметь HTML-разметку.)
С этим CSS:
span.at {
display: none;
}
(Обратите внимание, что я предполагаю, что эти @@
появляются только в реальном тексте, а нев значениях атрибутов.)
Live Пример:
const theString = "@@SOME TEXT@@";
const mark = document.createElement("mark");
mark.innerHTML = theString.replace(/</g, "<")
.replace(/&/g, "&")
.replace(/^@@|@@$/g, "<span class=at>$&</span>");
document.body.appendChild(mark);
span.at {
display: none;
}
Исходное решение:
Тогда, безусловно, лучше всего удалить эти @
, когда вы сделаете это:
mark.innerHTML = theString.replace(/^@@|@@$/g, "");
Пример:
const theString = "@@SOME TEXT@@";
const mark = document.createElement("mark");
mark.innerHTML = theString.replace(/^@@|@@$/g, "");
document.body.appendChild(mark);
Помните, что при установке innerHTML
строка читается как HTML , а не как обычный текст.Так что, если «НЕКОТОРЫЙ ТЕКСТ» содержит символы, которые являются особыми в HTML, но должны трактоваться буквально, результат не будет хорошим:
const theString = "@@<SOME TEXT>huh? where did the rest go?@@";
const mark = document.createElement("mark");
mark.innerHTML = theString.replace(/^@@|@@$/g, "");
document.body.appendChild(mark);
В этом случае явно создайте текстовый узел:
mark.appendChild(document.createTextNode(theString.replace(/^@@|@@$/g, "")));
Пример:
const theString = "@@<SOME TEXT>ah, there it is@@";
const mark = document.createElement("mark");
mark.appendChild(document.createTextNode(theString.replace(/^@@|@@$/g, "")));
document.body.appendChild(mark);