2012-01-10 11 views
3

既存の文字列からワイルドカード文字列を削除し、divの後に追加したいと思います。jQueryではどのように特定のワイルドカード文字列を変数に保存しますか?

私の場合、文字列内から部品番号を探して、その文字列を変数に設定したいと考えています。

ので、代わりにこのの([]何もすることができます間に注意してください):

私が持っているでしょう
<div> The part number is [8F8S0JJ9]</div> 
<div> The second part number is [V9S7D73]</div> 

<div> The part number is</div> 
[8F8S0JJ9] 
<div> The second part number is</div> 
[V9S7D73] 

ここに私のコードは次のとおりです。

// Get the product number that lies between [ ] marks from all div elements 
$('div:contains('['+*+']')').html(function() { 

//Look for the wildcard string and save it to a variable. how can I search within the string?! 
     var $finalstring = $(this).search('['+*+']'); 

//remove it from the string 
$(this).replace($finalstring, ''); 

//Set it to display after the string 
$(this).append($finalstring); 
    }); 

おかげ

+0

ワイルドカード文字列は常に文の最後の単語ですか? – DaveE

答えて

0

string.indexOf('')string.substring('')の組み合わせを使用することが、この答えににリンクされている次のプラグインを試してみてください。

jQuery selector regular expressions

0

まず、あなたは、単にjQueryのセレクタと、私は信じていることはできません。したがって、独自のフィルタを構築する必要があります。単純な正規表現を使うと、同じ効果を得ることができます。次に、既存のコンテンツを削除する必要があります。最後に、元のdivの後にこのコンテンツを挿入する必要があります。あなたは、いくつかの間違った構文を持っていますが、ここでそれを行う方法です:

http://jsfiddle.net/zbE2F/

$("div").filter(function(index){ 
    return /\[.*\]/.test($(this).html()); 
}).each(function() { 
    var $finalstring = $(this).html().match(/\[.*\]/)[0]; 
    $(this).html($(this).html().replace(/\[.*\]/),""); 
    $("<div></div>").insertAfter(this).append($finalstring); 
}); 

がうまくいけば、これは近いあなたが必要としたものにあなたを取得しますが、任意の時点でのdivが2で含まれている場合に注意しますがターゲット文字列、あなたは問題があります。

0

私の解決策も追加しますが、それは基本的にJosephのhahaと同じですが。ここで

http://jsfiddle.net/PjdXr/

var reg = /\[.*\]/; 
$("div").filter(function(){ 
    return $(this).text().match(reg); 
}).html(function(i,h) { 
    var nr = h.match(reg); 
    $(this).after(nr[0]); 
    return h.replace(reg,''); 
}); 
0

は、ワイルドカードを想定して可能な解決策は常に文の最後の言葉です:

http://jsfiddle.net/Aq9qe/

<div class='str'>Here is the [wildcard]</div> 

var str = $('.str').html(); 
var split = str.split(' '); 

var wild = split.pop(); 

$('.str').html(str.replace(wild, ' ')); 
$('.str').after(wild); 
1

私は物事を単純化し、ちょうど使用しますクラス:

$('.part').each(function(){ 
    var $this  = $(this), 
     partnum_reg = /(\[(.)+\])/g, 
     partnum  = String($this.html().match(partnum_reg)); 

    $this.html($this.html().replace(partnum, '')); 
    $('<div/>').insertAfter($this).html(partnum); 
}); 

デモ:http://jsfiddle.net/hB4Zp/

関連する問題