как удалить тег span из строки?
мне нужно удалить тег span из строки .Это возможно .?
мой вход это
In open <span class="">court</span> at 11:01 a.m.)
THE <span class="">COURT</span>: Our interpreter.
(NOTE: Spanish interpreter Rosa Lopez-Gaston sworn.)
SPEAKER 2: Judy Faviell for the State.
SPEAKER 1: Carey Bhalla for Mr. Garcia, who is present in custody, Your Honor.
SPEAKER 2: Judge, we do have a change of plea, which I will tender to the <span class="">Court</span>.
THE <span class="">COURT</span>:
выход это
In open court at 11:01 a.m.)
THE COURT: Our interpreter.
(NOTE: Spanish interpreter Rosa Lopez-Gaston sworn.)
SPEAKER 2: Judy Faviell for the State.
SPEAKER 1: Carey Bhalla for Mr. Garcia, who is present in custody, Your Honor.
SPEAKER 2: Judge, we do have a change of plea, which I will tender to the <span class="">Court</span>.
THE COURT:
4 ответов
для отредактированного вопроса Вы можете сделать следующее:
var str = // your string here
str = str.replace(/<\/?span[^>]*>/g,"");
попробовать
var mystring = 'In open <span class="">court</span> at 11:01 a.m.) THE <span class="">COURT</span>: Our interpreter. (NOTE: Spanish interpreter Rosa Lopez-Gaston sworn.) SPEAKER 2: Judy Faviell for the State. SPEAKER 1: Carey Bhalla for Mr. Garcia, who is present in custody, Your Honor. SPEAKER 2: Judge, we do have a change of plea, which I will tender to the <span class="">Court</span>.THE <span class="">COURT</span>:';
var after = $('<div />').html(mystring).find('span').contents().unwrap().end().end().html();
демо: Скрипка
резюме
если "строка", которую вам нужно преобразовать, уже является частью содержимого HTML-элемента, то вот POV (обычная старая ваниль) JavaScript (т. е. не jQuery) решение:
element.outerHTML = element.innerHTML;
примеры и объяснения
так, например, если вы хотите развернуть/удалить все пяди в вашем документе, вы можете выполнить цикл через все соответствующие элементы следующим образом:
document.querySelector('span').forEach(spanElmt => {
spanElmt.outerHTML = spanElmt.innerHTML;
};
в следующем примере показано, как это работает, показывает, что указанный элемент удален / развернут, в то время как все элементы, вложенные внутри, остаются неповрежденными.
const btn = document.querySelector('button');
const redSpan = document.querySelector('.red' );
const par = document.querySelector('p' );
const div = document.querySelector('div' );
const unwrapElmt = elmt => {
elmt.outerHTML = elmt.innerHTML; // *** the key line
};
const showParagraphHTML = () => {
div.textContent = 'HTML for the above line: ' + par.innerHTML;
};
showParagraphHTML();
const unwrapRedSpan = () => {
unwrapElmt(redSpan);
showParagraphHTML();
};
btn.addEventListener('click', unwrapRedSpan);
.red {
color: red;
}
.italic {
font-style: italic;
}
<button>Click here to unwrap/remove red span</button>
<p>Here is <span class="red">some <span class="italic">very</span> red</span> text.</p>
<p><div></div>
вставка строки в HTML-элемент
это решение требует, чтобы текст/строка для изменения уже является частью HTML-документа или элемента. Таким образом, он не будет работать на автономной строке, такой как:
const myStr = 'some <span><i>very</i> interesting</span> thing';
myStr.outerHTML = myStr.innerHTML; // won't work
это, в конечном счете, то, что первоначальный вопрос был расспрашивать. Однако строка выше может быть сделана частью временного промежуточного сиротского элемента HTML-контейнера, после чего это решение становится полезным:
const myStr = 'some <span><i>very</i> interesting</span> thing';
const container = document.createElement('div'); // a temporary orphan div
container.innerHTML = myStr;
const spanToUnwrap = container.querySelector('span');
spanToUnwrap.outerHTML = spanToUnwrap.innerHTML;
const myModifiedStr = container.innerHTML;
это может показаться излишним, если, например, вы хотите удалить только один или несколько простых тегов из одной строки, как это предлагается в вопросе. В таком случае замена на основе регулярных выражений, вероятно, будет достаточной, как это предлагается в другого ответа. Однако для чего-то более сложного (например, только желание удалить пролеты определенного класса и т. д.), использование временного сиротского HTML-элемента в качестве промежуточного может быть весьма полезным.
обратите внимание, что стратегия, описанная в этом разделе, в конечном счете, что другой ответ показывает, как делать с jQuery. Однако, если ваша начальная строка уже является частью HTML-элемента, и вам еще не нужен jQuery, использование jQuery может быть излишним, когда это outerHTML
/innerHTML
swap действительно все, что вам нужно.
это должно помочь
return $(string).text()
Если вы не используете jQuery, вы можете что-то вроде:
var e = document.createElement('div');
e.innerHTML = string;
return e.textContent ? e.textContent : e.innerText;
вы также можете попробовать использовать DOMParser хотя, возможно, излишне за то, что вы пытаетесь сделать