NSRange从第一次出现到字符串结束

时间:2016-05-25 15:33:03

标签: swift cocoa

我想把头发拉出来试图产生一个有效的NSRange,它似乎不应该是这么复杂,所以我猜测我使用了错误的方法。这就是我想要做的事情:

我有一个字符串,里面有一些unicode字符:

"The quick brown fox\n❄jumped\n❄over the lazy dog"

我想从该字符创建一个NSRange直到字符串的结尾,而我可以为第一次出现的字符获取相应的索引:

text.rangeOfString("❄")?.startIndex

我似乎无法以一致的格式(我可以传递给NSMakeRange)来获取字符串的结尾以实际生成范围。这看起来应该很简单,但是我已经被困了一个多小时,现在试图弄清楚如何让它发挥作用,我一直最终得到Index类型,我可以'}转换为整数以转换回NSMakeRange对其第二个元素所需的长度。

理想情况下我会做这样的事情(由于不兼容和不可投射的类型(Index vs Int)而无效):

let start = text.rangeOfString("❄")?.startIndex
NSMakeRange(start, text.endIndex - start)

我正在使用Swift,所以我有能力使用Swift的Range<String.Index>,如果它会让事情变得更容易,虽然它似乎是另一个范围表示不同于NSRange和我&#39;我不确定两者的相容程度如何(不要想进入Index vs Int的另一个维度。

1 个答案:

答案 0 :(得分:1)

将您的String转换为NSString。

您将可以使用基金会的.rangeOfString代替Swift的.rangeOfString

该基金会将返回NSRange。

但要小心,它与使用Unicode的Swift方法不同,并且NSRange和Range不兼容(尽管有convert them的方法)。 / p>