gpt4 book ai didi

swift - 你如何使用 String.substringWithRange? (或者,Ranges 在 Swift 中是如何工作的?)

转载 作者:IT王子 更新时间:2023-10-29 04:54:48 34 4
gpt4 key购买 nike

我还没有弄清楚如何在 Swift 中获取 String 的子字符串:

var str = “Hello, playground”
func test(str: String) -> String {
return str.substringWithRange( /* What goes here? */ )
}
test (str)

我无法在 Swift 中创建范围。 Playground 中的自动完成并不是很有帮助 - 这就是它的建议:

return str.substringWithRange(aRange: Range<String.Index>)

我在 Swift 标准引用库中找不到任何有用的东西。这是另一个大胆的猜测:

return str.substringWithRange(Range(0, 1))

还有这个:

let r:Range<String.Index> = Range<String.Index>(start: 0, end: 2)
return str.substringWithRange(r)

我看到其他答案(Finding index of character in Swift String)似乎表明,由于 StringNSString 的桥接类型,“旧”方法应该有效,但不清楚如何 - 例如,这也不起作用(似乎不是有效语法):

let x = str.substringWithRange(NSMakeRange(0, 3))

想法?

最佳答案

您可以使用 substringWithRange 方法。它需要一个开始和结束 String.Index。

var str = "Hello, playground"
str.substringWithRange(Range<String.Index>(start: str.startIndex, end: str.endIndex)) //"Hello, playground"

要更改开始和结束索引,请使用 advancedBy(n)。

var str = "Hello, playground"
str.substringWithRange(Range<String.Index>(start: str.startIndex.advancedBy(2), end: str.endIndex.advancedBy(-1))) //"llo, playgroun"

您仍然可以将 NSString 方法与 NSRange 一起使用,但是您必须确保您使用的是 NSString,如下所示:

let myNSString = str as NSString
myNSString.substringWithRange(NSRange(location: 0, length: 3))

注意:如 JanX2 所述,第二种方法对 unicode 字符串不安全。

关于swift - 你如何使用 String.substringWithRange? (或者,Ranges 在 Swift 中是如何工作的?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24044851/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com