string.find

简介: string.find

函数 string.find 用于在指定的目标字符串中搜索指定的模式。最简单的模式就是一个单词,它只会匹配到这个单词本身。例如,模式 'hello' 会在目标字符串中搜索子串 "hello" 。函数 string.find 找到一个模式后,会返回两个值:匹配到的模式开始位置的索引结束位置的索引。如果没有找到任何匹配,则返回 nil


s = "hello word"
i, j = string.find(s, "hello")
print(i, j)                       --> 1   5
print(string.sub(s, i, j))        --> hello
print(string.find(s, "word"))     --> 7   11
i, j = string.find(s, "l")
print(i, j)                       --> 3   3
print(string.find(s, "lll"))      --> nil


匹配成功后,可以以函数 find 返回的结果为参数调用函数 string.sub 来获取目标字符串中模式匹配相应模式的子串。对于简单的模式来说,这一般就是模式本身。


函数 string.find 具有两个可选参数。第三个参数是一个索引,用于说明从目标字符串的那个位置开始搜索。第四个参数是一个布尔值,用于说明是否进行简单搜索。字如其名,所谓简单搜索就是忽略模式而在目标字符串中进行单纯的"查找子字符串"的动作


> string.find("a [world]", "[")
stdin:1: malformed pattern (missing ']')
> string.find("a [world]", "[", 1, true)    --> 3   3


由于 '[' 在模式中具有特殊含义,因此第一个函数调用会报错。在第二个函数调用中,函数只是把 '[' 当做简单字符串。


注意

如果没有第三个参数,是不能传入第四个参数的。

目录
相关文章
|
8月前
|
存储 编译器 C++
【C++】String -- 详解(下)
【C++】String -- 详解(下)
|
8月前
|
存储 JavaScript C语言
【C++】String -- 详解(上)
【C++】String -- 详解(上)
|
8月前
|
存储 Java 对象存储
String str="Hello" 与 String str=new String(“Hello”)一样吗?
String str="Hello" 与 String str=new String(“Hello”)一样吗?
每天一道面试题之String str=“i“与 String str=new String(“i”)一样吗?
每天一道面试题之String str=“i“与 String str=new String(“i”)一样吗?
String.search()
String.search()
94 0
|
JavaScript 前端开发 索引
String.indexOf()
String.indexOf()
107 0
「JDK」解析 String str=““与 new String()
一、基础概念 为了讲清楚他们的差异,这里先介绍几个概念。 1.1 常量池 所谓常量池:顾名思义就是用来存放一些常量的。该常量是在编译期被确定,并被保存在已编译的.class文件中,其中包括了类,方法,接口等包含的数值常量,字符常量和字符串常量。
|
C++
C++ string.find()函数
C++ string.find()函数
172 0
每天一个知识点(二)String str=“i”与 String str=new String(“i”)一样吗?
不一样,使用String str="i",java虚拟机会把它分配到常量池中,而 String str=new String(“i”)创建了一个对象,会被分到堆内存中。
String str = new String(“abc“)到底new了几个对象
如果常量池里面没有“abc”这个字符串,那虚拟机就会在堆内存中new出一个String对象,还会在常量池中new一个abc字符串对象;
15526 0

热门文章

最新文章