使用jquery获取两个字符串之间的字符串
如果我有这个HTML使用jquery获取两个字符串之间的字符串,jquery,attributes,image,extract,src,Jquery,Attributes,Image,Extract,Src,如果我有这个HTML <div class="comment-body"> [img]http://topnews.net.nz/images/YouTube-3.jpg[/img] random text here </div> <div class="comment-body"> [img]http://blog.brightcove.com/sites/all/uploads/FACEBOOK%20ICON.png[/img] random text
<div class="comment-body">
[img]http://topnews.net.nz/images/YouTube-3.jpg[/img] random text here
</div>
<div class="comment-body">
[img]http://blog.brightcove.com/sites/all/uploads/FACEBOOK%20ICON.png[/img] random text here
</div>
对于我所做的尝试,我没有任何东西可以提供,因为我不知道如何提取[img]
和[/img]
之间的值
但总的来说,是我试图实现的目标,如果它没有意义的话 经过测试,现在可以正常工作(原始版本没有遍历所有。注释正文元素,或者正确查找子字符串()
):
编辑了,因为我觉得有点无聊,所以将上面的内容变成了一个更通用的函数:
var divString, imgString;
$('.comment-body').each(
function(){
divString = $(this).text();
imgString = divString.substring(divString.indexOf('[img]') + 5,divString.indexOf('[/img]'));
console.log(imgString);
});
参考资料:
- jQuery材料:
- JavaScript(全部在以下位置:
经过测试,现在可以正常工作(原始版本没有遍历所有。请注释body
元素,或者正确查找子字符串()
):
编辑了,因为我觉得有点无聊,所以将上面的内容变成了一个更通用的函数:
var divString, imgString;
$('.comment-body').each(
function(){
divString = $(this).text();
imgString = divString.substring(divString.indexOf('[img]') + 5,divString.indexOf('[/img]'));
console.log(imgString);
});
参考资料:
- jQuery材料:
- JavaScript(全部在以下位置:
大卫·托马斯的另一个答案
实现此代码的另一种方法是使用正则表达式
function findStringBetween(elem,bbTagStart,bbTagClose){
var tag = bbTagStart;
function impliedEndTag(tag){
var impliedEnd = tag.replace(tag.substring(0,1),tag.substring(0,1) + '/');
return impliedEnd;
}
var endTag = bbTagClose || impliedEndTag(tag);
var divString = $(elem).text().trim();
if (divString.indexOf(tag) != -1){
var elemInfo = [];
elemInfo.imgString = divString.substring(divString.indexOf(tag) + tag.length,divString.indexOf(endTag));
elemInfo.text = divString.replace(tag + elemInfo.imgString + endTag, '');
return elemInfo;
}
else {
return false;
}
}
$('.comment-body').each(
function(){
/* call with two, or three arguments (the third is the optional 'bbTagClose':
1. elem = this, the DOM node,
2. '[img]' = whatever bbCode thing you want to use (I'm not sure what's available),
3. 'bbTagClose' = the end tag of the bbCode, assuming that the end-tag is the same as
the opening tag, except with a '/' as the second character, the impliedEndTag() function
will take care of it for you.
*/
var elemInfo = findStringBetween(this,'[img]');
if (elemInfo.imgString){
// or .prepend() if you prefer
$(this).text(elemInfo.text).append('<img src="' + elemInfo.imgString + '" class="commentimg" data-src2="'+ elemInfo.imgString +'"/>');
}
});
到
var replacedText=replaceText($this.text(),'img','');
大卫·托马斯的另一个答案
实现此代码的另一种方法是使用正则表达式
function findStringBetween(elem,bbTagStart,bbTagClose){
var tag = bbTagStart;
function impliedEndTag(tag){
var impliedEnd = tag.replace(tag.substring(0,1),tag.substring(0,1) + '/');
return impliedEnd;
}
var endTag = bbTagClose || impliedEndTag(tag);
var divString = $(elem).text().trim();
if (divString.indexOf(tag) != -1){
var elemInfo = [];
elemInfo.imgString = divString.substring(divString.indexOf(tag) + tag.length,divString.indexOf(endTag));
elemInfo.text = divString.replace(tag + elemInfo.imgString + endTag, '');
return elemInfo;
}
else {
return false;
}
}
$('.comment-body').each(
function(){
/* call with two, or three arguments (the third is the optional 'bbTagClose':
1. elem = this, the DOM node,
2. '[img]' = whatever bbCode thing you want to use (I'm not sure what's available),
3. 'bbTagClose' = the end tag of the bbCode, assuming that the end-tag is the same as
the opening tag, except with a '/' as the second character, the impliedEndTag() function
will take care of it for you.
*/
var elemInfo = findStringBetween(this,'[img]');
if (elemInfo.imgString){
// or .prepend() if you prefer
$(this).text(elemInfo.text).append('<img src="' + elemInfo.imgString + '" class="commentimg" data-src2="'+ elemInfo.imgString +'"/>');
}
});
到
var replacedText=replaceText($this.text(),'img','');
此函数可在任何字符串中查找任何给定的BBCODE,如果需要,您可以将其配置为替换或从这些BBCODE中提取内容作为数组
var replacedText = replaceText($this.text(), 'img', '<img src="samesrc" class="commentimg" data-src2="$1" \/>');
//搜索str
var search\u str=“我喜欢这个[img]问题。png[/img]花,[img]答案\u 1-1.png[/img]你说的是[img]答案\u 2-1.png[/img]很好。”
//举例
var str=bbcode_search_and_replace($(“#search_str”).text(),“[img]”,“[/img]”;
$('search_str').html(str);
功能bbcode_search_和_replace(搜索_str、bb_opening_标签、bb_closing_标签){
//搜索str长度
var sLength=字符串(search_str).length;
//bbcode开始标记长度
var fPart_length=字符串(bb_开始标签)。长度;
//bbcode结束标记长度
var ePart_length=字符串(bb_closing_标记);
//打开标签的位置索引
var start_idx=0;
//结束标记的位置索引
var end_idx=0;
//开始标记的搜索索引
var pos_sIdx=0;
//结束标记的位置索引
var pos_eIdx=0;
//变量替换=“[image]”;
var-arr=[];
var-idx=0;
//环路
while(start_idx!=-1){
arr[idx]={};
start\u idx=String(search\u str).indexOf(bb\u opening\u tag,pos\u sIdx);
//检查是否结束
如果(开始_idx==-1){
//如果存在,关闭标记后的最后一个str
如果(idx>0)arr[idx]['str']=search\u str.子字符串(pos\u sIdx);
log(“arr[idx]['str']=”+arr[idx]['str']);
打破
}
//末端位置索引
pos_eIdx=开始_idx+fPart_长度;
end_idx=String(search_str).indexOf(bb_closing_标记,pos_eIdx);
//将str保存在bbtags中
arr[idx]['str']=搜索str.子字符串(pos\u sIdx,start\u idx);
log(“arr[idx]['str']=”+arr[idx]['str']);
arr[idx]['src']='';
log(“arr[idx]['src']=”+arr[idx]['src']);
arr[idx]['pos\u start']=起始idx+fPart\u长度;
arr[idx]['pos_end']=end_idx;
//更新数组和启动pos索引
idx++;
pos_sIdx=端部idx+端部长度;
}
var k=0;
var str=“”;
而(k
此函数可在任何字符串中查找任何给定的BBCODE,如果需要,您可以将其配置为替换或从这些BBCODE中提取内容作为数组
var replacedText = replaceText($this.text(), 'img', '<img src="samesrc" class="commentimg" data-src2="$1" \/>');
//搜索str
var search\u str=“我喜欢这个[img]问题。png[/img]花,[img]答案\u 1-1.png[/img]你说的是[img]答案\u 2-1.png[/img]很好。”
//举例
var str=bbcode_search_and_replace($(“#search_str”).text(),“[img]”,“[/img]”;
$('search_str').html(str);
功能bbcode_search_和_replace(搜索_str、bb_opening_标签、bb_closing_标签){
//搜索str长度
var sLength=字符串(search_str).length;
//bbcode开始标记长度
var fPart_length=字符串(bb_开始标签)。长度;
//bbcode结束标记长度
var ePart_length=字符串(bb_closing_标记);
//打开标签的位置索引
var start_idx=0;
//结束标记的位置索引
var end_idx=0;
//开始标记的搜索索引
var pos_sIdx=0;
//结束标记的位置索引
var pos_eIdx=0;
//变量替换=“[image]”;
var-arr=[];
var-idx=0;
//环路
while(start_idx!=-1){
arr[idx]={};
start\u idx=String(search\u str).indexOf(bb\u opening\u tag,pos\u sIdx);
var replacedText = replaceText($this.text(), 'img', '<img src="$1" \/>');
var replacedText = replaceText($this.text(), 'img', '<img src="samesrc" class="commentimg" data-src2="$1" \/>');
//search str
var search_str = "I love this [img]question.png[/img] Flowers, and [img]answer_1-1.png[/img] you say is that [img]answer_2-1.png[/img] good Point."
//using example
var str = bbcode_search_and_replace($('#search_str').text(),"[img]","[/img]");
$('#search_str').html(str);
function bbcode_search_and_replace(search_str, bb_opening_tag, bb_closing_tag) {
//search str length
var sLength = String(search_str).length;
//bbcode opening tag length
var fPart_length = String(bb_opening_tag).length;
//bbcode closing tag length
var ePart_length = String(bb_closing_tag).length;
//position index for opening tag
var start_idx = 0;
//position index for closing tag
var end_idx = 0;
//searching index for opening tag
var pos_sIdx = 0;
//position index for closing tag
var pos_eIdx = 0;
//var replacement = '[image]';
var arr = [];
var idx = 0;
//loop
while(start_idx !== -1) {
arr[idx] = {};
start_idx = String(search_str).indexOf(bb_opening_tag,pos_sIdx);
//check for ending
if(start_idx === -1) {
//if exist, last str after closing tag
if(idx > 0) arr[idx]['str'] = search_str.substring(pos_sIdx);
console.log("arr[idx]['str'] = " + arr[idx]['str']);
break;
}
//end position index
pos_eIdx = start_idx + fPart_length;
end_idx = String(search_str).indexOf(bb_closing_tag,pos_eIdx);
//save str inside bbtags
arr[idx]['str'] = search_str.substring(pos_sIdx, start_idx);
console.log("arr[idx]['str'] = " + arr[idx]['str']);
arr[idx]['src'] = "<img src = 'img/" + search_str.substring(start_idx + fPart_length, end_idx) + "' />";
console.log("arr[idx]['src'] = " + arr[idx]['src']);
arr[idx]['pos_start'] = start_idx + fPart_length;
arr[idx]['pos_end'] = end_idx;
//Update array and start pos indexes
idx++;
pos_sIdx = end_idx + ePart_length;
}
var k = 0;
var str = "";
while(k < arr.length) {
if(arr[k]['src'] === undefined) arr[k]['src'] = "";
str += arr[k]['str'] + arr[k]['src'];
k++;
}
return str;
}
<script type="text/javascript">
var myStr = "The quick brown fox jumps over the lazy dog.";
var subStr = myStr.match("quick(.*)lazy");
alert(subStr[1]);
</script>