我想把头发拉出来试图产生一个有效的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
的另一个维度。
答案 0 :(得分:1)
将您的String转换为NSString。
您将可以使用基金会的.rangeOfString
代替Swift的.rangeOfString
。
该基金会将返回NSRange。
但要小心,它与使用Unicode的Swift方法不同,并且NSRange和Range不兼容(尽管有convert them的方法)。 / p>