2013-03-20 143 views
1

我有一个通过AJAX从PHP返回的字符串。该字符串值是这样的:在字符串中剪切字符串

<img src="/images/error.png"/>Invalid name` 

有没有办法切断开始<>结束串?

我只需要字符串中的<img/>。我不想从PHP返回唯一的<img/>,因为整个字符串在另一个页面中使用。

+0

img src里会不会有标签可以是“>”?它会始终以“<”开头吗? – user829323 2013-03-20 00:08:36

+0

要用特定的字符串分隔符“剪切”字符串,请使用split方法:'string.split(“<”)'。如果这个字符串不是静态的,但可以包含任意的HTML,最好使用DOM来解析HTML并获得你想要的部分。 – 2013-03-20 00:08:39

+0

字符串如何不同? – 2013-03-20 00:09:19

回答

3

这是什么意思?这提醒'<img src="/images/error.png"/>'

jsFiddle

var img = '<img src="/images/error.png"/>Invalid name'; 
var slice = img.slice(0, img.indexOf('>') + 1); 
alert(slice); 
+0

谢谢。得到我需要的。 – 2013-03-20 00:14:40

1

您可以使用split() method,并在最后一个字符加回。

var returnedString = '<img src="/images/error.png"/>Invalid name'; 
var returnedImage = returnedString.split('>')[0] +'>'; 
1
var str = '<img src="/images/error.png"/>Invalid name'; 
alert(str.substring(str.indexOf('<'), str.indexOf('>')+1)); 

编辑: 如果这个动作将被重复很多次,那么性能也应考虑。 见第2版对于各纯JS回答你走到这一步:第3假设标签从0开始(“<”),最近3别:http://jsperf.com/15512887

我现在就算为自己感到骄傲我的回答会不会被选中的人:-)

+1

+1'slice'和'substring'在'substring'中可能有点小,因为它只是为字符串设计的,其中'slice'适用于所有数组。拆分速度要慢得多,因为它将数组拆分为两个,我们只关心第一个数组。 – 2013-03-20 00:51:39

0

如果你明确什么获取初始标签只是一个字符串,然后:

var s = ' <img src="/images/error.png"/>Invalid name'; 

var tag = '<' + s.split(/\W+/g)[1] + '>'; 

虽然稳健性,你应该这样做:

var parts = s.split(/\W+/g); 
var tag = parts.length? '<' + parts[1] + '>' : '';