buf.indexOf(value[, byteOffset][, encoding])
-
value
<string> | <Buffer> | <Uint8Array> | <integer> 要搜索的内容。¥
value
<string> | <Buffer> | <Uint8Array> | <integer> What to search for. -
byteOffset
<integer> 开始搜索buf
的位置。如果为负数,则从buf
的末尾开始计算偏移量。默认值:0
。¥
byteOffset
<integer> Where to begin searching inbuf
. If negative, then offset is calculated from the end ofbuf
. Default:0
. -
encoding
<string> 如果value
是字符串,则这是用于确定将在buf
中搜索的字符串的二进制表示的编码。默认值:'utf8'
。¥
encoding
<string> Ifvalue
is a string, this is the encoding used to determine the binary representation of the string that will be searched for inbuf
. Default:'utf8'
. -
返回:<integer>
buf
中第一次出现value
的索引,如果buf
不包含value
,则为-1
。¥Returns: <integer> The index of the first occurrence of
value
inbuf
, or-1
ifbuf
does not containvalue
.
如果 value
是:
¥If value
is:
-
字符串,
value
根据encoding
中的字符编码进行解释。¥a string,
value
is interpreted according to the character encoding inencoding
. -
Buffer
或 <Uint8Array>,value
将全部使用。要比较部分Buffer
,则使用buf.subarray
。¥a
Buffer
or <Uint8Array>,value
will be used in its entirety. To compare a partialBuffer
, usebuf.subarray
. -
数字,
value
将被解释为0
和255
之间的无符号 8 位整数值。¥a number,
value
will be interpreted as an unsigned 8-bit integer value between0
and255
.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('this is a buffer');
console.log(buf.indexOf('this'));
// Prints: 0
console.log(buf.indexOf('is'));
// Prints: 2
console.log(buf.indexOf(Buffer.from('a buffer')));
// Prints: 8
console.log(buf.indexOf(97));
// Prints: 8 (97 is the decimal ASCII value for 'a')
console.log(buf.indexOf(Buffer.from('a buffer example')));
// Prints: -1
console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8)));
// Prints: 8
const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le'));
// Prints: 4
console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le'));
// Prints: 6
const { Buffer } = require('node:buffer');
const buf = Buffer.from('this is a buffer');
console.log(buf.indexOf('this'));
// Prints: 0
console.log(buf.indexOf('is'));
// Prints: 2
console.log(buf.indexOf(Buffer.from('a buffer')));
// Prints: 8
console.log(buf.indexOf(97));
// Prints: 8 (97 is the decimal ASCII value for 'a')
console.log(buf.indexOf(Buffer.from('a buffer example')));
// Prints: -1
console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8)));
// Prints: 8
const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le'));
// Prints: 4
console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le'));
// Prints: 6
如果 value
不是字符串、数字或 Buffer
,则此方法将抛出 TypeError
。如果 value
是数字,则它将被强制转换为有效的字节值(0 到 255 之间的整数)。
¥If value
is not a string, number, or Buffer
, this method will throw a
TypeError
. If value
is a number, it will be coerced to a valid byte value,
an integer between 0 and 255.
如果 byteOffset
不是数字,则会被强制为数字。如果强制转换的结果是 NaN
或 0
,则将搜索整个缓冲区。此行为与 String.prototype.indexOf()
匹配。
¥If byteOffset
is not a number, it will be coerced to a number. If the result
of coercion is NaN
or 0
, then the entire buffer will be searched. This
behavior matches String.prototype.indexOf()
.
import { Buffer } from 'node:buffer';
const b = Buffer.from('abcdef');
// Passing a value that's a number, but not a valid byte.
// Prints: 2, equivalent to searching for 99 or 'c'.
console.log(b.indexOf(99.9));
console.log(b.indexOf(256 + 99));
// Passing a byteOffset that coerces to NaN or 0.
// Prints: 1, searching the whole buffer.
console.log(b.indexOf('b', undefined));
console.log(b.indexOf('b', {}));
console.log(b.indexOf('b', null));
console.log(b.indexOf('b', []));
const { Buffer } = require('node:buffer');
const b = Buffer.from('abcdef');
// Passing a value that's a number, but not a valid byte.
// Prints: 2, equivalent to searching for 99 or 'c'.
console.log(b.indexOf(99.9));
console.log(b.indexOf(256 + 99));
// Passing a byteOffset that coerces to NaN or 0.
// Prints: 1, searching the whole buffer.
console.log(b.indexOf('b', undefined));
console.log(b.indexOf('b', {}));
console.log(b.indexOf('b', null));
console.log(b.indexOf('b', []));
如果 value
为空字符串或空 Buffer
且 byteOffset
小于 buf.length
,则返回 byteOffset
。如果 value
为空且 byteOffset
至少为 buf.length
,则返回 buf.length
。
¥If value
is an empty string or empty Buffer
and byteOffset
is less
than buf.length
, byteOffset
will be returned. If value
is empty and
byteOffset
is at least buf.length
, buf.length
will be returned.