Javascript字符串替换在循环内不起作用

Javascript string replace not working inside loop

本文关键字:不起作用 循环 字符串 替换 Javascript      更新时间:2023-09-26

字符串替换在javascript中不起作用

我的字符串 ="购买超过 1200 卢比的 T 恤可享受 50% 的折扣";
输出字符串 = '买三通时立减 50% 的折扣高于卢比-1200';

这是我的JS代码。

 var json, xhr = new XMLHttpRequest();
xhr.open("GET","http://www.exmaple.com/api/v1.0/deal/deallimit/6/61f4279fb0cb4d4899810bef06539d06e349",true);   
xhr.onload=function() {
                var response=xhr.responseText;
                var resultValue = JSON.parse(response);
                var dealArray = resultValue['All deals'];
                console.log(dealArray.length);
                var i;
                for (i = 0; i < dealArray.length; i++)
                {
                  var key1 = 749;
                  var key2 = 29;
                  var orgProID = (dealArray[i]['productid']+dealArray[i]['productkey'])/key2;
                  var cat = dealArray[i]['categoryname'].toLowerCase();
                  var catReplace = cat.replace(" ","-");
                  var pro1 = dealArray[i]['productname'].toLowerCase();
                  var proReplace = pro1.replace('%','-percent');
                  var proReplace1 = proReplace.replace(" ","-");
                  console.log(catReplace+"/"+proReplace1);
                  if (dealArray[i]['price'] !=0) {
                     document.getElementById('appendDeals').innerHTML +="<tr><td class='dealName'>"+dealArray[i]['productname']+ " @ Rs."+dealArray[i]['price']+"</td><td class='buyDeal'>BUY</td></tr>";
                  }
                  else{
                     document.getElementById('appendDeals').innerHTML +="<tr><td class='dealName'>"+dealArray[i]['productname']+"</td><td class='buyDeal'>BUY</td></tr>";
                  }
                }
            }            
    xhr.send(null); 

但是当我签入控制台日志时,我发现

get-upto 50-percent off on health & personal care products

所有位置均未替换为"-"

如何做到这一点。

您的代码不起作用,因为.replace()不会在字符串中全局进行替换。您需要设置 g 标志以使其全局工作。

按照以下简单算法根据需要转换字符串:

  1. 使整个字符串.toLowerCase()
  2. .replace() %-percent
  3. .replace()空间与- , 全球

工作代码片段:

var myString = 'Get Flat 50% off on Tees Purchase above Rs. 1200';
// apply the algorithm here:
var outputString = myString.toLowerCase().replace('%', '-percent').replace(/ /g,"-"); 
alert(outputString);

阅读: .replace() |.toLowerCase() |多核

您需要在

全局意义上使用replace,例如

var proReplace = pro1.replace(/%/g,'-percent');
var proReplace1 = proReplace.replace(/ /g,'-');

看看 JavaScript Replace。

proReplace.replace(" ","-"); 仅适用于子字符串的第一次出现。看看这里 在一个替换调用中替换多个字符