• Node.js Video Tutorials

Node.js - Buffer.indexOf() 方法



NodeJS 的 Buffer.indexOf() 方法用于在缓冲区中搜索值。如果找到该值,则返回该值开始的位置;如果未找到,则返回 -1。如果该值在缓冲区中出现多次,则返回第一次出现的位置。

语法

以下是 NodeJS indexOf() 方法的语法:

buffer.indexOf(value, byteOffset, encoding);

参数

buffer.indexOf() 方法接受三个参数。第一个参数是必填参数,其余两个参数是可选参数。

  • value − 这是必填参数。它是要在缓冲区中搜索的值。该值可以是字符串、数字或缓冲区。

  • byteoffset − 这是可选参数。它指定从哪里开始搜索。如果给出负的偏移量值,则将从缓冲区的末尾开始搜索。默认值为 0。

  • encoding − 如果要搜索的值是字符串,则可以使用此参数指定编码。这是一个可选参数。默认情况下,使用的编码为 utf8。

返回值

Buffer.indexOf() 方法将返回搜索值第一次出现的位置。如果未找到该值,则返回 -1。

示例

在本例中,我们将尝试在创建的缓冲区中搜索一个值并测试结果。

const buffer = Buffer.from('Welcome to TutorialsPoint');
if (buffer.indexOf('Welcome') != -1) {
   console.log("The string welcome is present in the buffer");
} else {
   console.log("The string welcome is not present");
}

输出

我们正在缓冲区中搜索字符串 Welcome,该缓冲区包含字符串 "Welcome to Tutorialspoint"。由于给定的字符串存在,因此我们得到以下输出。我们检查该值是否不等于 -1。当我们在缓冲区中没有找到给定值的匹配项时,将返回 -1。

The string welcome is present in the buffer

示例

让我们尝试在下面的示例中给出 byteOffset 参数:

const buffer = Buffer.from('Welcome to TutorialsPoint');
if (buffer.indexOf('Point', 10) != -1) {
   console.log("The string point is present in the buffer");
} else {
   console.log("The string point is not present");
}

输出

我们使用了 10 作为 byteOffset。它将从字符串 "Welcome to TutorialsPoint" 的偏移量 10 开始搜索。由于搜索字符串:Point 可用,因此您将看到输出打印为 "字符串 Point 存在于缓冲区中"。

The string point is present in the buffer

示例

在本例中,我们将使用缓冲区作为值来检查它是否在给定的缓冲区中可用。

const buffer = Buffer.from('Welcome to TutorialsPoint');
const result  = buffer.indexOf(Buffer.from('TutorialsPoint'));
if (result != -1) {
   console.log("The string TutorialsPoint is present in the buffer");
} else {
   console.log("The string TutorialsPoint is not present");
}

输出

在 Buffer.indexOf() 方法中,我们使用了一个包含字符串值:TutorialsPoint 的缓冲区。我们的主缓冲区包含字符串:Welcome to TutorialsPoint。因此,由于该字符串存在,因此返回的值是该字符串的起始位置。

The string TutorialsPoint is present in the buffer

示例

让我们尝试一个错误的情况,即检查当字符串不存在时 Buffer.indexOf() 的响应。

const buffer = Buffer.from('Welcome to TutorialsPoint');
if (buffer.indexOf('Testing') != -1) {
   console.log("The string Testing is present in the buffer");
} else {
   console.log("The string Testing is not present");
}

输出

我们正在字符串:Welcome to TutorialsPoint 的缓冲区中搜索字符串:Testing。由于它不存在,它将返回 -1。因此,您将看到输出为:字符串 Testing 不存在

The string Testing is not present

示例

让我们测试 Buffer.indexOf() 中的编码参数。

const buffer = Buffer.from('Hello World');
if (buffer.indexOf('Hello','hex') != -1) {
   console.log("The string Hello is present in the buffer");
} else {
   console.log("The string Hello is not present");
}

输出

我们使用了 "hex" 编码。当使用编码进行检查并且字符串存在时,它将返回字符串的起始位置。

The string Hello is present in the buffer

示例

在本例中,我们将使用整数数值,即 utf-8 编码值在缓冲区中进行搜索。

const buffer = Buffer.from('Hello World');
if (buffer.indexOf(72) != -1) {
   console.log("The character H is present in the buffer");
} else {
   console.log("The string H is not present");
}

输出

根据 utf-8 编码,72 表示字符 'H'。当在缓冲区中使用整数数值进行搜索时,它将返回字符 H 的位置,因为它存在于缓冲区中。

The string Hello is present in the buffer
nodejs_buffer_module.htm
广告