为了账号安全,请及时绑定邮箱和手机立即绑定

在Swift String中查找字符索引

在Swift String中查找字符索引

动漫人物 2019-10-15 10:11:51
现在该承认失败了...在Objective-C中,我可以使用类似以下内容的东西:NSString* str = @"abcdefghi";[str rangeOfString:@"c"].location; // 2在Swift中,我看到了类似的内容:var str = "abcdefghi"str.rangeOfString("c").startIndex...但这只是给我一个String.Index,我可以用它下标回到原始字符串,但不能从中提取位置。FWIW,其中String.Index有一个私有ivar _position,其中具有正确的值。我只是看不到它的暴露方式。我知道自己可以轻松地将其添加到String中。我对这个新API中缺少的东西感到好奇。
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

extension String {


    // MARK: - sub String

    func substringToIndex(index:Int) -> String {

        return self.substringToIndex(advance(self.startIndex, index))

    }

    func substringFromIndex(index:Int) -> String {

        return self.substringFromIndex(advance(self.startIndex, index))

    }

    func substringWithRange(range:Range<Int>) -> String {

        let start = advance(self.startIndex, range.startIndex)

        let end = advance(self.startIndex, range.endIndex)

        return self.substringWithRange(start..<end)

    }


    subscript(index:Int) -> Character{

        return self[advance(self.startIndex, index)]

    }

    subscript(range:Range<Int>) -> String {

        let start = advance(self.startIndex, range.startIndex)

            let end = advance(self.startIndex, range.endIndex)

            return self[start..<end]

    }



    // MARK: - replace

    func replaceCharactersInRange(range:Range<Int>, withString: String!) -> String {

        var result:NSMutableString = NSMutableString(string: self)

        result.replaceCharactersInRange(NSRange(range), withString: withString)

        return result

    }

}


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 1056 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信