2017-04-07 2 views
1

Je souhaite masquer une sous-chaîne dans une cellule de tableau. Supposons que la table ressemble à ceci:jQuery pour masquer la sous-chaîne dans une cellule de tableau

<div id="table"> 
    <table> 
    <tr> 
     <td> Blah </td> 
     <td> Blah [100, 100]</td> 
     <td> Blah [130, 70]</td> 
    </tr> 
    </table> 
</div> 

Comment puis-je utiliser jQuery (et CSS) pour cacher la [100100] une partie de la cellule 2 et [130, 70] partie de la cellule 3?

Je trouve cette solution dans une autre réponse à un problème similaire:

<div class="text">Good Stuff Hide Me</div> 
<div class="text">Great Stuff Hide Me</div> 
<div class="text">Best Stuff Hide Me</div> 

$('div.text').html(function (i, t) { 
    return t.replace('Hide Me', '<span class="hidden">Hide Me</span>'); 
}) 

Mais je pense que je besoin d'une solution regex puisque le contenu de la partie [] peut être différent? ou y a-t-il un meilleur iea?

Répondre

2

Vous avez raison d'avoir besoin d'une regex. Cela devrait fonctionner:

<div class="text">Good Stuff [100]</div> 
<div class="text">Great Stuff[100,010]</div> 
<div class="text">Best Stuff[70, 130, 180]</div> 

$('div.text').html(function (i, t) { 
    return t.replace(/\[.*\]/g, ''); 
}) 
0

t.replace(/(\s*\[s*\d+\s*,\s*\d+\s*\])/, '<span class="hidden">$1</span>')

La réponse de Brian supprime le texte au lieu de le cacher (qui est plus savy des coûts, si vous n'avez pas besoin que le texte pour plus tard). Si dans tous les cas, vous avez vraiment besoin de le cacher pour référence future, cela fera l'affaire. J'ai aussi tendance à utiliser des regex plus précis. Brian va tout enlever entre crochets. Le supérieur ne correspondra que s'il y a deux nombres séparés par une virgule, entre eux.

référence Regex ->https://www.w3schools.com/jsref/jsref_obj_regexp.asp

groupes Capturer expliqué ->https://stackoverflow.com/a/6419076/7081773

0

Puisque vous posé des questions sur les cellules de table, vous voulez zéro et limiter à votre <td> juste au cas où vous avez un texte similaire ailleurs:

$('td').each(function() { 
    var currentText = $(this).text(); 
    var newText = currentText.replace(/\[.+\]/g, ''); 
    $(this).text(newText); 
});