jQuery:找到具体的数字&用特定字符串替换

时间:2014-12-14 12:57:52

标签: javascript jquery

我在我的网站上使用食物菜单。 在我的食物菜单中,您可以选择您想要的肉类。

例如:

shawarma: pita:10$ Baguette:12$ Plate: 17$
steak: pita: 20 Baguette:none Plate:35$

问题是当某些菜单项没有皮塔饼或长棍面包或盘子时,脚本将打印零" 0"

steak: pita: 20 Baguette:0 Plate:35$

我正在尝试查找所有0号码并替换为-。 问题是,在某些商品中价格会跟0102030一样...... 在这里,我不想改变" 0"到" - "

我试图使用这段代码:(但这段代码不能满足我的需要)

有什么建议吗?

    jQuery(document).ready(function($) {
    $("div").find(":contains('0')").each(function(){
        $this = $(this);
        $this.text("-");
    });
});

html看起来:

<div id="wppizza-article-tiers-118" class="wppizza-article-tiers">


                    <span id="wppizza-118-4-0" class="wppizza-article-price ">
                <span>0 $</span>
                                <div class="wppizza-article-price-lbl wppizza-no-cart">Toast</div>
                            </span>
                    <span id="wppizza-118-4-1" class="wppizza-article-price ">
                <span>20 $</span>
                                <div class="wppizza-article-price-lbl wppizza-no-cart">Big Pita</div>
                            </span>
                    <span id="wppizza-118-4-2" class="wppizza-article-price ">
                <span>33 $</span>
                                <div class="wppizza-article-price-lbl wppizza-no-cart">Baguette</div>
                            </span>
                    <span id="wppizza-118-4-3" class="wppizza-article-price ">
                <span>35 $</span>
                                <div class="wppizza-article-price-lbl wppizza-no-cart">לאפה</div>
                            </span>
                    <span id="wppizza-118-4-4" class="wppizza-article-price ">
                <span>49 $</span>
                                <div class="wppizza-article-price-lbl wppizza-no-cart">Plate</div>
                            </span>


        </div>

2 个答案:

答案 0 :(得分:0)

 jQuery(document).ready(function() {
    $(".wppizza-article-price").each(function(){
        var value = $(this).find('span').text();
        if (value == '0 $') {
           $(this).find('span').text('-'); 
        }
    });
 });

现在可以使用DEMO

答案 1 :(得分:0)

使用.replace()的简单正则表达式将执行此操作:/\b0\b/g

工作代码段:

&#13;
&#13;
var myString = "steak: pita: 20 Baguette:0 Plate:35$";

myString = myString.replace("/\b0\b/g", "-");

alert(myString);
&#13;
&#13;
&#13;

jsFiddle Demo

读取:.replace() | MDN


修改

尝试使用HTML代码:

$('#wppizza-article-tiers-118 span span').each(function(){
  var text = $(this).text();
  text = text.replace(/\b0\b/g, "-");
  $(this).text(text);
});

正则表达式解释:

/\b0\b/g

下面,
/是您的正则表达式模式所包含的内容 \b表示边界 0是您实际需要替换的内容 g意味着全球化。替换将在全球范围内完成。

Various Regex tutorials | Google


EDIT2:以下是您问题中HTML的工作代码段

&#13;
&#13;
$('.wppizza-article-price span').each(function(){
  var text = $(this).text();
  text = text.replace(/\b0\b/g, "-");
  $(this).text(text);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wppizza-article-tiers-118" class="wppizza-article-tiers">


  <span id="wppizza-118-4-0" class="wppizza-article-price ">
    <span>0 $</span>
    <div class="wppizza-article-price-lbl wppizza-no-cart">Toast</div>
  </span>
  <span id="wppizza-118-4-1" class="wppizza-article-price ">
    <span>20 $</span>
    <div class="wppizza-article-price-lbl wppizza-no-cart">Big Pita</div>
  </span>
  <span id="wppizza-118-4-2" class="wppizza-article-price ">
    <span>33 $</span>
    <div class="wppizza-article-price-lbl wppizza-no-cart">Baguette</div>
  </span>
  <span id="wppizza-118-4-3" class="wppizza-article-price ">
    <span>35 $</span>
    <div class="wppizza-article-price-lbl wppizza-no-cart">לאפה</div>
  </span>
  <span id="wppizza-118-4-4" class="wppizza-article-price ">
    <span>49 $</span>
    <div class="wppizza-article-price-lbl wppizza-no-cart">Plate</div>
  </span>


</div>
&#13;
&#13;
&#13;