繁体   English   中英

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

[英]NSRange from first occurrence until end of string

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

我有一个字符串,其中包含一些unicode字符:

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

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

text.rangeOfString("❄")?.startIndex

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

理想情况下我会做这样的事情(由于不兼容和不可转换的类型(索引与Int)而无效):

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

我使用的斯威夫特,所以我必须用斯威夫特的能力Range<String.Index>如果它会使事情变得更容易,但它似乎是另一个范围不同NSRange表示,我不知道这两个如何兼容是(不想进入Index vs Int另一个维度)。

将您的String转换为NSString。

您将能够使用Foundation的.rangeOfString而不是Swift的.rangeOfString

该基金会将返回NSRange。

但要小心,它与使用Unicode的Swift方法不同,并且NSRange和Range不兼容(尽管有方法可以转换它们 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM