当前位置: 首页 > 面试题库 >

您如何使用String.substringWithRange?(或Ranges如何在Swift中工作?)

淳于功
2023-03-14
问题内容

我还不能弄清楚如何String在Swift中获取a的子字符串:

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)

我看过其他答案(在SwiftString中查找字符的索引),似乎暗示着由于String是的桥类型NSString,因此“旧”方法应该起作用,但尚不清楚如何-
例如,这也不起作用(似乎不是有效的语法):

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应用程序中绘制折线。 SWIFT代码 错误: 我找不到解决方案。 问题答案: 首先 ,必须创建一个。 自iOS 7起已弃用,尽管您仍可以在Objective-C中使用它,但在Swift中不支持它。 其次 ,您必须在委托方法中创建并返回一个(不要将其传递给)。 在方法中,传递对象(而不是or )。 以解释传递给哪个对象与返回的对象之间的区别。) 因此,在该方法中,删除

  • 问题内容: 有没有人设法使此功能在Swift中工作? 苹果文档:https : //developer.apple.com/library/prerelease/mac/documentation/Carbon/Reference/QuartzEventServicesRef/index.html#//apple_ref/c/func/CGEventTapCreate 以下是CGEventTapC

  • 问题内容: 在Objective-C中,我们使用以下代码为视图设置RGB颜色代码: 如何在Swift中使用它? 问题答案: 这是该函数的Swift版本(用于获取值的UIColor表示形式):

  • 问题内容: 有人能帮我吗?我找不到完整的语法示例。 问题答案: 不清楚您要问 的 是什么 ,但我注意到您在代码中有几个错误: 您应该创建使用 返回,因此无需将其包装在内部(也称为实例化新对象)。 完成处理程序是一个闭包,下面是创建该特定闭包的方法: } 这是更新的代码:

  • 问题内容: 我正在尝试将此代码段转换为Swift。由于某些困难,我正在努力下车。 我遇到的第一个也是主要的问题是如何定义和使用C结构。我认为,在上述代码的第一行()中,我认为他们正在定义从struct sockaddr_in(?)调用的实例。我试图声明这样的。 但是我 在调用中 得到了 参数’sin_len’ 的错误 Missing参数 错误 , 这是可以理解的,因为该结构需要多个参数。所以我再次

  • 问题内容: 如何在Swift中使用UserDefaults保存/检索字符串,布尔值和其他数据? 问题答案: 参考:NSUserdefault objectTypes 商店 取回 去掉 删除所有键 Swift 2及以下 商店 取回 去掉 寄存器 registerDefaults:将registrationDictionary添加到每个搜索列表的最后一项。这意味着在NSUserDefaults在所有其