代码之家  ›  专栏  ›  技术社区  ›  Adam

iOS如何获取swift中的string.range(of:string)倍数

  •  -2
  • Adam  · 技术社区  · 6 年前

    MyText是

    let myString: NSAttributedString = <siren> 123123 <siren> 123123 <siren>
    let myRange = myString.string.range(of:"<siren>")
    let newString = NSMutableAttributedString()
    newString.append(myString)
    if myRange != nil{
      newString.replaceCharacters(in: NSRange(myRange, in:myString.string), 
                with:myAttributeString as NSAttributedString!)
    }
    

    如果 myString 有一个 <siren> 这是可行的,但超过两个就不可行了 <警报器

    仅先更换 <警报器

    我想 String.range 返回第一个值

    如何找到他们?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Piotr Labunski v_d123    6 年前

    如果要查找所有范围,可以尝试使用此问题的解决方案 get all ranges of a substring in a string in swift

    但是,如果您的主要目的是替换某些字符串/模式的出现,那么您可以添加这样的扩展:

    extension String {
    
      func replacing(pattern: String, withTemplate: String) throws -> String {
        let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
        return regex.stringByReplacingMatches(in: self,
                                              options: [],
                                              range: NSRange(0 ..< utf16.count),
                                              withTemplate: withTemplate)
      }
    }