Привет, я хочу заменить свое решение строки JavaScript, как это.

input:- this is <title> and <heading> 
output:- this is <span>title</span> and <span>heading</span>

Может кто-нибудь помочь мне в этом. Заранее спасибо.

0
Abhinav Sahu 12 Дек 2016 в 09:01

4 ответа

Лучший ответ

Попробуйте что-то вроде этого:

var input = "this is <title> and <heading>";
var output = input.replace(/<([^>]+)>/g, "<span>$1</span>");
console.log(output);

То есть соответствует открывающему <, за которым следуют один или несколько не - > символов, захваченных в виде подстрок, чтобы вы могли ссылаться на него как $1 в строке замены, после чего следует закрытие { { Х3 } } .

1
nnnnnn 12 Дек 2016 в 06:12

Еще одна альтернатива

var output = input.split("<").join("#").split(">").join("</span>").split("#").join("<span>");
console.log(output);
1
Jules 12 Дек 2016 в 06:18

Используйте регулярное выражение для замены

input.replace(/</g, '<span_').replace(/>/g,'</span>').replace(/_/g,'>');
2
Azad 12 Дек 2016 в 06:12

Использование

input.replace(/<[a-zA-Z]*>/g, '<span>$&</span>');

Объяснение : .replace содержит все теги в ''. '$& заменяется тегом. См. Это для получения дополнительной информации: https: // developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

Примере:

var ta = document.getElementById('ta'), output = document.getElementById('output');
ta.value = 'I have <title> and <head> (this is just example text, you can replace).';
function replaceIt() {
  output.innerText = ta.value.replace(/<[a-zA-Z]*>/g, '<span>$&</span>');
  // Okay, technically Node#innerText is non-standard, so use an HTML escape function on production sites.
  // For demo purposes, I just chose innerText for ease of use
}
<textarea id="ta"></textarea>
<button onclick="replaceIt()">Enclose tags in &ltspan&gt s.</button>
<div>Output:</div>
<div id="output"></div>
1
Kyle Lin 12 Дек 2016 в 06:21