как удалить тег 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,"");

демо:http://jsfiddle.net/vXXJ6/


попробовать

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 хотя, возможно, излишне за то, что вы пытаетесь сделать