aardio 文档

查找字符串

下面介绍不使用模式匹配语法的字符串查找函数。

参考:模式匹配函数

一. 禁用模式匹配搜索文本

文本模式搜索

string.indexOf(str,substr [ , startPos [ , endPos ] ])

查找第二个字符串参数 @substr 位于第一个字符串参数 @str 的位置,找到字符串则返回开始位置与结束位置,返回值按字节计数。 如果参数 @str 为空字符串则返回 null 值。

参数 @str, @substr 兼容 string/buffer 类型参数。 参数 @str 不能指定 pointer 类型内存指针(改用功能类似的 raw.indexOf 可指定 pointer 指针)。

可选用第三个参数 @startPos 指定开始查找的位置,默认为 1。可选用第四个参数 @endPos 指定结束查找的位置,默认为字符串长度。

注意在 aardio 中所有字符串函数类似上面表示字节位置的 @startPos , @endPos 参数,默认都允许使用负数表示尾部倒记数,并且自动检查并转换为安全有效的范围(传入过大过小的值会自动处理)

print( string.indexOf("abcdefg","cde") ) //显示 3,5

二. 禁用模式匹配反向查找字符串

string.lastIndexOf(str,substr [ , endPos])

自后向前查找第二个字符串参数 @substr 位于第一个字符串参数 @str 的位置,找到字符串则返回开始位置与结束位置,返回值按字节计数。 此函数执行二进制搜索,字符串可包含 '\0'

可选用第三个参数 @endPos 指定搜索范围最后一个字节的位置(默认值为 -1 ),如果为正数则从左侧向右侧(尾部)按字节计数,如果为负数则自尾部反向按字节计数。传入过大过小的值会自动处理。

此函数自 @endPo 开始反向逐个字节向前查找字符串,效率较低。

示例:

print( string.lastIndexOf("abcdefg","cde") ) //显示 3,5

三. 查找任意单字节字符

string.indexAny(str,bytes | bytecode [ , startPos])

在第一个字符串参数 @str 中查找第二个字符串参数 @bytes 中的任意一个单字节字符置。也可以在第二个参数指定一个字节码。第二个参数可包含 '\0' 或指定要搜索的字节码为 0。

可选用第三个参数 @startPos 指定开始查找的位置,默认为 1。

找到字符则返回该字符所在位置,返回值按字节计数。

import console;

console.log( string.indexAny("abcdefg","cde") ) //显示 3
console.log( string.indexAny("abcdefg",'c'# ) ) //显示 3

console.pause(); 

四. 反向查找任意单字节字符

string.lastIndexAny(str,bytes | bytecode [ , endPos])

自后向前查找第二个字符串参数 @bytes 中的任意一个单字节字符位于第一个字符串参数 @str 的位置。也可以在第二个参数指定一个字节码。第二个参数可包含 '\0' 或指定要搜索的字节码为 0。

可选用第三个参数 @endPos 指定搜索范围最后一个字节的位置(默认值为 -1 ),如果为正数则从左侧向右侧(尾部)按字节计数,如果为负数则自尾部反向按字节计数。传入过大过小的值会自动处理。

返回值按字节计数。

示例:

import console;
console.log( string.lastIndexAny("abcdefg","cde") ) //显示 5
console.pause(); 

五. 检测是否以指定字符串开始

string.startsWith(str,substr,是否忽略大小写=false)

判断第二个字符串参数 @substr是否位于第一个字符串参数 @str 开始处。参数三为可选参数(默认为false)

示例:

import console;
console.log( string.startsWith("abcdefg","abc") ) //显示 true
console.log( string.startsWith("abcdefg","efg") ) //显示 false
console.pause(); 

六. 检测是否以指定字符串结束

string.endsWith(str,substr,是否忽略大小写=false)

判断第二个字符串参数 @substr 是否位于第一个字符串参数 @str 结束处。可选参数三指定是否忽略大小写( 默认值为false )。

示例:

import console;
console.log( string.endsWith("abcdefg","abc") ) //显示 false
console.log( string.endsWith("abcdefg","efg") ) //显示 true
console.pause(); 

Markdown 格式