2

我有一个完整的文件,其中包含以下格式的文本:(忽略它是 CSS 的事实)我需要获取两者之间的字符串 | 字符,每次,做一些事情:

<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

您可以使用 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

单程;

$.each($("#unused").text().split("|"), function(ix, val) {
    val = $.trim(val); //remove \r|\n
    if (val !== "")
        alert(val);
});
于 2013-03-07T12:16:08.450 回答
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 回答