ios - 在 Swift 中使用范围从属性字符串返回子字符串

标签 ios swift range substring nsrange

<分区>

我正在尝试使用范围从字符串中获取子字符串,但运气不佳。在上下搜索之后,我找不到在 Swift 中完成这个看似简单的任务的方法。该范围采用从委托(delegate)方法获得的 NSRange 的形式。

在 Objective-c 中,如果你有一个范围,你可以这样做:

NSString * text = "Hello World";
NSString *sub = [text substringWithRange:range];

根据 this answer ,以下应该在 Swift 中工作:

let mySubstring = text[range]  // play
let myString = String(mySubstring)

但是,当我尝试这样做时,出现错误:

Cannot subscript a value of type 'String' with an index of type 'NSRange' (aka '_NSRange')

我认为问题可能与使用 NSRange 而不是范围有关,但我不知道如何让它工作。感谢您的任何建议。

最佳答案

问题是您不能使用 NSRange 下标 String,您必须使用 Range。尝试以下操作:

let newRange = Range(range, in: text)
let mySubstring = text[newRange]
let myString = String(mySubstring)

关于ios - 在 Swift 中使用范围从属性字符串返回子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55328428/

相关文章:

ios - 多个命令产生与信息 plist 错误相关的路径

swift - 如何保护可能失败的属性初始化

Java - 平均线性图

javascript - Contenteditable 防止插入符号放置在某个元素之后

ios - UITextField:密码实现

iphone - 游戏中心 API + 应用内购买 API = 一个应用程序有两个不同的用户帐户?

ios - 在项目选择上调用委托(delegate)方法

swift - 如何将 var 值设置为当前的纬度或经度? nikhil 提供的更新代码

objective-c - 是否执行 self = self init;返回 self ; Objective-C 中的效果与 swift 中 self.init() 的效果相同吗?

javascript - 检查是否有两个以上的日期范围重叠