Kotlin如何查找字符串的位置
时间: 2024-05-06 13:19:30 浏览: 10
在 Kotlin 中,可以使用 indexOf() 方法来查找字符串中的子字符串的位置。该方法返回子字符串第一次出现的位置,如果没有找到则返回 -1。
例如,以下代码将查找字符串 "Hello World" 中的子字符串 "World" 的位置:
```
val str = "Hello World"
val index = str.indexOf("World") // 返回 6
```
如果要从指定位置开始查找,可以将起始位置作为第二个参数传递给 indexOf() 方法。
例如,以下代码将从字符串 "Hello World" 的第 3 个字符开始查找子字符串 "llo" 的位置:
```
val str = "Hello World"
val index = str.indexOf("llo", 3) // 返回 3
```
还可以使用 lastIndexOf() 方法来查找最后一个匹配的子字符串的位置。该方法与 indexOf() 方法的用法类似。
相关问题
kotlin 字符串的find函数
Kotlin 字符串的 `find` 函数用于在字符串中查找指定的字符序列,并返回第一个匹配的字符串位置。该函数的语法如下:
```kotlin
fun CharSequence.find(
regex: Regex,
startIndex: Int = 0,
ignoreCase: Boolean = false
): MatchResult?
```
其中,`regex` 参数表示要查找的正则表达式,`startIndex` 参数表示从哪个索引开始查找,默认为 `0`,`ignoreCase` 参数表示是否忽略大小写,默认为 `false`。该函数返回一个 `MatchResult` 对象,其中包含了匹配的结果信息,如果没有找到匹配的字符串,则返回 `null`。
例如,要查找字符串 `str` 中是否包含字符串 `abc`,可以使用以下代码:
```kotlin
val str = "hello abc world"
val result = str.find("abc".toRegex())
if (result != null) {
println("Found at index ${result.range.first}")
} else {
println("Not found")
}
```
执行上述代码会输出 `Found at index 6`,表示在字符串 `str` 中找到了字符串 `abc`,并且它的起始位置为索引 `6`。
kotlin "这是一段[测试]字符串[示例]" 获取字符串[]中的所在的下标
可以使用 Kotlin 中的正则表达式来实现。代码如下:
```kotlin
val str = "这是一段[测试]字符串[示例]"
val regex = Regex("\\[(.*?)\\]") // 匹配[]及其中的内容
val matchResults = regex.findAll(str) // 查找所有匹配结果
for (matchResult in matchResults) {
val matchStr = matchResult.groupValues[1] // 获取匹配的字符串
val startIndex = matchResult.range.first // 获取匹配字符串的起始下标
val endIndex = matchResult.range.last // 获取匹配字符串的结束下标
println("$matchStr 的下标为: $startIndex - $endIndex")
}
```
输出结果:
```
测试 的下标为: 5 - 10
示例 的下标为: 11 - 16
```
以上代码中,首先定义了一个字符串 `str`,然后定义了一个正则表达式 `regex`,用于匹配字符串中的 `[]` 中间的内容。使用 `regex.findAll(str)` 查找字符串中所有匹配结果,得到一个 `MatchResult` 列表。遍历列表,使用 `matchResult.groupValues[1]` 获取匹配的字符串,使用 `matchResult.range.first` 和 `matchResult.range.last` 获取匹配字符串的起始和结束下标。