关于java:类似于Swift中的’String.indexOf(“ text”)’函数

Similar to 'String.indexOf(“text”)' function in Swift

本问题已经有最佳答案,请猛点这里访问。

我是Swift的新手,请寻求帮助。

我有一个弦

1
let someString ="Here is an example of string"

我想得到它的is an example部分。
在Java中,我可以执行以下操作:

1
2
String someString ="Here is an example of string"    
String s = someString.substring(someString.indexOf("is"), someString.indexOf(" of"));

我想知道Swift中是否有与Java类似的东西
String.indexOf("some string")以便找到String元素的索引。 我环顾四周,找不到任何东西。
我需要的是找到要成为子字符串的字符串的startIndexendIndexes。 我了解使用string.endIndex.advanceBy(-9)之类的方法可以更轻松地完成此操作,但是我要遍历的字符串有几段长。

找到了解决方案:
NSString.range(of:"string").location返回我一直在寻找的索引,以防有人怀疑

更新

狮子座的答案对寻找替代品的人也很有效:

Note that you should make sure to only search the range" of" string
after the occurrence to the"is". if let lower = someString.range(of:"is")?.upperBound, let upper = someString.range(of:" of", range: lower..


您可以使用Swifts Stringrange方法实现类似的功能。 它将返回搜索字符串中给定字符串的范围。

在Swift中,起始索引和结束索引是所得rangelowerBoundupperBound

这是一个基于您的示例的示例:

1
2
3
4
5
6
7
8
9
10
11
import Foundation

let text ="Here is an example of string"

if let textRange = text.range(of:"is an example") {
    textRange.lowerBound // startIndex
    textRange.upperBound // endIndex
    let otherText = text.substring(with: textRange) // result ="is an example"

    print("\\(otherText)")
}

您可以将其放在Playground中并在其中玩耍。