javascript - 剪线

标签 javascript string

我正在按照《Eloquent Javascript》一书中的练习进行练习,并得出了这段代码:

function between(string, start, end)
    {
        // Start AT the last character position of the start string

        var startAt = string.indexOf(start) + start.length;

        //Count the position of the end string first character
        var endAt = string.indexOf(end, startAt);

        return string.slice(startAt, endAt);

    }

    var betweenIn = between('Inazuma Eleven', 'Ina', 'ven');
    console.log(betweenIn);

代码运行良好。它在 in 之间提取一段字符串。现在我试图真正理解这一段,但有一件事我不清楚。变量 endAt 检查第三个给定参数的字符串的第一个字符位置(在本例中,我的字符串是“Inazuma Eleven”,结束参数是“ven”。我需要它来切片字符串,但似乎第二个参数indexOf 方法没有做任何事情。如果我删除它,我会得到相同的结果。这是为什么?

最佳答案

indexOf 的第二个参数默认为 0。这是字符串中开始查找匹配子字符串的位置。

从起始字符串末尾开始可确保:a) 如果起始字符串和结束字符串相同,则结束字符串与它的第一个实例不匹配;b) 您必须扫描较少的目标字符串,以便代码运行速度更快。

在本例中,开始字符串和结束字符串不同,因此结果是相同的。然而,由于 indexOf 方法将搜索更多的字符串(从 0 而不是第 4 个字符开始),因此运行速度会稍微慢一些。

关于javascript - 剪线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517550/

相关文章:

arrays - 如何在没有 ShareMem 单元的情况下将动态字符串数组传递给 dll 库(dll 和用 d7 编写的客户端)?

删除某个重复的键左侧的所有文本

JavaScript 继承

javascript - knockout 双向绑定(bind)不适用于复选框

javascript - 在 JavaScript 中打印时间段

c++ - 如何为 vector <string> 设置默认参数以在类中的默认构造函数中使用?

javascript - Cloudkit JS && Node JS

javascript - 在循环中使用 [i] 指向一个元素会给出无法识别的表达式

java - 将数组中的字符串值传递给java中的方法?

java - 在 Java 中格式化 toString