2013-03-07 45 views
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 

這只是獲取第一個字符串。我如何在那裏添加邏輯來爲每個字符串做些事情?

回答

1

您可以使用拆分法|

Live Demo

arr = $('#unused').text().split('|'); 
1

之間獲得字符串數組您可以分割像

var my_splitted_var = $('#unused').text().split('|'); 
1

的一種方式;

$.each($("#unused").text().split("|"), function(ix, val) { 
    val = $.trim(val); //remove \r|\n 
    if (val !== "") 
     alert(val); 
}); 
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); 
} 
1

的RegExp-版本:

LIVE DEMO (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); 

所以,你只能得到管道(|)之間的所有元素。 在我的示例中,我將每個匹配結果推送到一個數組。你現在可以迭代它來獲得你的結果。