2013-03-07 3 views
2

J'ai un fichier complet avec le texte dans le format suivant: (en ignorant le fait qu'il est CSS) J'ai besoin d'obtenir la chaîne entre les deux | caractères et à chaque fois, faire quelque chose:Trouver du texte entre deux caractères et pour chacun, faire quelque chose

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

Le code que j'ai est la suivante:

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 

Ce obtient juste la première chaîne. Comment puis-je ajouter de la logique pour faire quelque chose pour chaque chaîne?

Répondre

1

Vous pouvez utiliser méthode split pour obtenir tableau de chaînes entre |

Live Demo

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

Vous pouvez diviser comme

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

Une façon;

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

Une façon:

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-Version:

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); 

Alors vous obtenez seulement les éléments entre les tuyaux (|). Dans mon exemple, j'ai placé tous les résultats correspondants dans un tableau. Vous pouvez maintenant parcourir pour obtenir votre résultat.

Questions connexes