如何删除一个逗号,并替换为一个句号javascript



我有一个字符串,我已经创建了,我想删除最后一个逗号,并将其替换为句号。我想保留所有其他的逗号。这里我试着用一个条件语句,它可以添加逗号,但是不能用句号代替最后一个。我在这方面是新手,我将非常感谢任何帮助。

for (var i = 0; i < petArray.length; i++) {
    petObj = petArray[i];
    likesString = petObj.name + " " + " is a " + petObj.type + " she " + " likes ";
    for (var j = 0; j < petObj.likes.length; j++) {
        if (j < petObj.likes.length) {
            var likesString = likesString + petObj.likes[j] + ", ";
        }
        else if (j == petObj.likes.length) {
            likesString.replace(", ", ".");
        }
    }
    displayResult();
}

你好像很辛苦啊!使用harry的join()方法来构建列表。

for (var i = 0; i < petArray.length; i++) {
    petObj = petArray[i];
    likesString = petObj.name + " is a " + petObj.type + " she likes " +
                  petObj.likes.join(", ") + ".";
    displayResult();
}

可以这样做:

 str.replace(/,([^,]*)$/,".$1")

正则表达式匹配逗号后跟任意数量的非逗号,一直到字符串的末尾…根据定义,这是最后一个逗号。如果没有逗号,一个逗号或任意数量的逗号,它都可以工作。

注意,if部分必须始终为真,否则else部分永远不会执行:

for (var j = 0; j < petObj.likes.length; j++) {
    if (j < petObj.likes.length) {
        var likesString = likesString + petObj.likes[j] + ", ";
    }
    else if (j == petObj.likes.length) {
        likesString.replace(", ", ".");
    }
}

for循环只在该条件为真时继续,然后代码测试相同的条件。

你可以这样做:

for (var j = 0; j < petObj.likes.length; j++) {
    if (j < petObj.likes.length-1) {
        likesString = likesString + petObj.likes[j] + ", ";
    }
    else {
        likesString = likesString + petObj.likes[j] + ". ";
    }
}

有更好的方法来执行条件,不会重复那么多,但可能会达到你想要的效果。(我也固定了额外的'var'部分)

这里是学习和测试正则表达式的好地方:

本质上,您需要替换以下内容:

RegExp Pattern: /,([^,]+)$/
Replace Pattern: .$1
所以你的代码应该是这样的:
s.replace(/,([^,]+)$/, '.$1');

其中s是您要替换的字符串。

别忘了把那一行设置成一个变量来保存。

要将字符串中最后出现的逗号替换为句号,可以使用:

var index = str.lastIndexOf(",");
var newstr = str.substring(0, index) + "." + str.substring(index + 1);

看了你的代码后,似乎epascarello的方法是最好的。除了他所指出的,如果数组中没有元素,你的字符串将以"她喜欢"结尾。要解决这个问题,可以使用:

likesString = petObj.name + " is a " + petObj.type + (petObj.likes.length ? ", she likes " + petObj.likes.join(", ") : "") + ".";

开始时,您可以避免使用最后一个逗号,代码如下:

for (var i = 0; i < petArray.length; i++) {
    petObj = petArray[i];
    var likesString = petObj.name + " " + " is a " + petObj.type;
    if (petObj.likes.length) {
       likesString = likesString + " she " + " likes " petObj.likes.join(", ");
    }
    likesString = likesString + '.'
    displayResult();
}

如果你还想使用你的代码,你必须测试vs . length-1,因为like数组的索引从0到length-1:

for (var i = 0; i < petArray.length; i++) {
    petObj = petArray[i];
    var likesString = petObj.name + " " + " is a " + petObj.type + " she " + " likes ";
    for (var j = 0; j < petObj.likes.length; j++) {
      likesString = likesString + petObj.likes[j] + ((j == petObj.likes.length-1)?'.':', ';
    }
    displayResult();
}

如果你仍然想在字符串构造后改变它,你可以删除最后两个字符

likesString=likesString.replace(/, $/,'.')

这是因为replace()返回一个带有新值的新字符串,而不是更改字符串本身,您可以这样做:

likesString = likesString.replace(/,s$/, ".");

相关内容

  • 没有找到相关文章

最新更新