下面介绍不使用模式匹配语法的字符串查找函数。
参考:模式匹配函数
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();