当前位置: 首页 > 知识库问答 >
问题:

如何使用 NS 范围获取 NS 字符串子字符串?返回 NS 字符串,而不是字符串

仇睿
2023-03-14
let nsString = NSString("Some string")
let nsRange = NSRange(5...10)
type(of: nsString.substring(with: nsRange))
// => String.Type

如何做到这一点,但返回NSString而不是String。我不是在寻找使用Range的解决方案

基准代码:

let string = String(repeating: "This is it. ", count: 10000)
let i1 = 19000
let i2 = 19020

// time computation
func tc(computation: (Int, Int) -> Void) {
    let startTime = DispatchTime.now()
    for i in 0..<100 {
        computation(i1 + i, i2 + i)
    }
    let endTime = DispatchTime.now()
    let ns = (endTime.uptimeNanoseconds - startTime.uptimeNanoseconds)
    print("Time: \(ns)")
}



tc { (s1, s2) in
  let start = string.index(string.startIndex, offsetBy: s1)
  let end = string.index(start, offsetBy: s2 - s1)
  string[start..<end]
}

tc { (s1, s2) in
  (string as NSString).substring(with: NSRange(s1..<s2))
}

< code >字符串块:< code > 55 _ 394 _ 353 ns

NS 字符串1_389_647ns - 快 39.86 倍

共有2个答案

梁盛
2023-03-14

这些已经做了100次了,对吗?

let start = string.index(string.startIndex, offsetBy: s1)
let end = string.index(string.startIndex, offsetBy: s2)

如何执行此操作:

let start = string.index(string.startIndex, offsetBy: s1)
let end = string.index(string.startIndex, offsetBy: s2)

tc {
    string[start..<end]
}

现在哪款更优化

华泽语
2023-03-14

难道不能将 NS 字符串转换为字符串,反之亦然吗?

let string = NSString("nsString") as String
let nsString = String("string") as NSString
 类似资料:
  • GETRANGE key start end 返回key 中字符串值的子字符串,字符串的截取范围由start 和end 两个偏移量决定(包括start 和end 在内)。可以使用负值,字符串右面下标是从-1开始的。 注意返回值处理: 1: start>=length, 则返回空字符串 2: stop>=length,则截取至字符结尾 3: 如果start 所处位置在stop右边, 返回空字符串

  • 我有两根绳子 在两种情况下,我应该删除

  • 问题内容: 我猜我正在收到此错误,因为字符串正在尝试对值进行子字符串化。但是那部分不能消除这个问题吗? 这是Java代码段: 我收到此错误: 问题答案: 我猜我正在收到此错误,因为字符串试图将Null值作为子字符串。但是“ .length()> 0”部分不能消除该问题吗? 不,在itemdescription为null时调用itemdescription.length()不会生成StringInd

  • 问题内容: 有没有一种方法可以在Python中对字符串进行子字符串化,以从第三个字符到字符串末尾获取新的字符串? 也许喜欢吗? 如果离开第二部分意味着“直到最后”,而如果离开第一部分,它是否从头开始? 问题答案: Python称这个概念为“切片”,它不仅适用于字符串,还适用于更多的领域。看看这里的一个全面的介绍。

  • 对性能是否有影响? 不同Java版本的行为是否有差异?

  • 以下endpoint以字符串形式返回用户名。 我如何构造它以返回一个json对象,该对象包含一个键,该键的值为该字符串(例如,{“user”:“joeuser”})?