2

次の形式のテキストでいっぱいのファイルがあります: (CSS であるという事実を無視して) 2 つの | の間の文字列を取得する必要があります。文字と毎回、何かをします:

<div id="unused">
  |#main|
  #header|
  .bananas|
  #nav|
  etc
</div>

私が持っているコードはこれです:

var test_str = $('#unused').text();
var start_pos = test_str.indexOf('|') + 1;
var end_pos = test_str.indexOf('|',start_pos);
var text_to_get = test_str.substring(start_pos,end_pos);
//I want to do something with each string here

これは最初の文字列を取得するだけです。そこにロジックを追加して、各文字列に対して何かを行うにはどうすればよいですか?

4

5 に答える 5

1

一方通行;

$.each($("#unused").text().split("|"), function(ix, val) {
    val = $.trim(val); //remove \r|\n
    if (val !== "")
        alert(val);
});
于 2013-03-07T12:16:08.450 に答える
1

split メソッドを使用して、間の文字列の配列を取得できます|

ライブデモ

arr = $('#unused').text().split('|');
于 2013-03-07T12:13:50.333 に答える
1

のように分割できます。

var my_splitted_var = $('#unused').text().split('|');
于 2013-03-07T12:14:21.567 に答える
1

一方通行 :

    var test_str = $('#unused').text();

while(!test_str.indexOf('|'))
{
var start_pos = test_str.indexOf('|') + 1;
var end_pos = test_str.indexOf('|',start_pos);
var text_to_get = test_str.substring(start_pos,end_pos);
test_str  = test_str.slice(end_pos,test_str.length);
}
于 2013-03-07T12:25:52.150 に答える
1

正規表現バージョン:

ライブデモ (jsfiddle.net)

var trimmedHtml = $("#unused").html().replace(/\s/g, '');

var result = new Array();

var regExp = /\|(.+?)(?=\|)/g;
var match = regExp.exec(trimmedHtml);
result.push(match[1]);
while (match != null) {
    match = regExp.exec(trimmedHtml);
    if (match != null) result.push(match[1]);
}

alert(result);

したがって、パイプ間の要素のみを取得します ( |)。私の例では、一致するすべての結果を配列にプッシュしました。それを繰り返し処理して結果を得ることができます。

于 2013-03-07T13:14:49.677 に答える