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元素的索引。 我环顾四周,找不到任何东西。
我需要的是找到要成为子字符串的字符串的startIndex和endIndexes。 我了解使用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..
-
如果您需要两个子字符串之间的子字符串,则只需要获取正确的上下索引if let lower = someString.range(of:"is")?.upperBound, let upper = someString.range(of:" of")?.lowerBound { let substring = someString[lower..
-
请注意,应确保仅在出现" is"之后搜索" string"范围。 if let lower = someString.range(of:"is")?.upperBound, let upper = someString.range(of:" of", range: lower..
-
BTW Range没有位置属性和范围,它不是String静态方法
-
您确定已将import UIKit或import Foundation添加到文件中吗?
-
Ive偶然写了String,意在写NSString.range(of:").location。
-
不要使用NSString。 Swift本机类型是String
-
顺便说一句,谢谢您提供的解决方案,它也能正常工作
您可以使用Swifts String的range方法实现类似的功能。 它将返回搜索字符串中给定字符串的范围。
在Swift中,起始索引和结束索引是所得range的lowerBound和upperBound。
这是一个基于您的示例的示例:
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中并在其中玩耍。
-
感谢您的答复,但问题是我知道它开头的字符串和结尾的字符串,但是中间的文本可能不同。 我可能不清楚。 因此,例如,字符串可能是"这是字符串的示例",我知道它以" is"开头,以" of"的开头结尾,但是它们之间的字符串可能是任何东西,这就是为什么我尝试查找确切的startIndex 和endIndex