从字符串中删除第一个和最后一个

时间:2013-11-26 20:10:53

标签: javascript html dom replace

我有这个HTML代码:

<p id="demo">Visit <br /> stackoverflow <br /> or jsfiddle <br /></p>
<button onclick="myFunction()">Try it</button>
function myFunction()
{
    var str = document.getElementById("demo").innerHTML; 
    var res = str.replace("<br />","");
    document.getElementById("demo").innerHTML=res;
}

我想从中删除第一个和最后一个<br />而不是全部。\ n 这是我的jsfiddle http://jsfiddle.net/3W83m/

3 个答案:

答案 0 :(得分:4)

以下是您要问的一般问题的解决方案:

var arr = str.split(/<br\s*\/?>/);
var res = arr[0]+arr.slice(1,-1).join('<br>')+arr.slice(-1);

此答案不要求第一个和最后一个孩子为<br>

如果您只想在结尾删除<br>,那么很容易:

var res = str.replace(/^\s*<br\s*\/?>|<br\s*\/?>\s*$/g,'');

Demonstration

答案 1 :(得分:1)

你可以尝试这种方式,如果你确定第一个和最后一个元素是br:其他方面你可以循环测试第一个和最后一个br并删除它们。

function myFunction() {
    var elem= document.getElementById("demo");
    elem.removeChild(elem.firstElementChild);
    elem.removeChild(elem.lastElementChild);
}

<强> Demo

为了确保它只删除第一个和最后一个brs而不删除任何其他元素,如果第一个/最后一个不是BR,您可以添加一个简单的安全检查。

function myFunction() {
    var elem= document.getElementById("demo"), 
        fChild = elem.firstElementChild, 
        lChild =elem.lastElementChild;

if(fChild.tagName === "BR")
    elem.removeChild(fChild);
if(lChild.tagName === "BR")
    elem.removeChild(lChild);

}

答案 2 :(得分:0)

首先<br/>

if (myString.indexOf('<br/>') > 0) {
  myString = myString.slice(myString.indexOf('<br/>')+5, myString.length);
}

最后<br/>

if (myString.lastIndexOf('<br/>') == myString.length - 5) {
  myString = myString.slice(0, -4);
}