使用NSMutableAttributedString和regex将特定文本替换为图像

时间:2017-07-26 09:14:39

标签: ios regex swift nsmutableattributedstring

我想替换" [img src =(IMAGE NAME)]"文字到(图像名称)图像。 但文字换成了空白。不是图像。我该怎么办?

    guard
        let original = self.text
        else { return }
    let pattern = "\\[img src=(\\w+)\\]"

    do{
        let regex = try NSRegularExpression(pattern: pattern, options: [])
        let matches = regex.matches(in: original, options : [], range : NSMakeRange(0, original.characters.count))
        let attributeString = NSMutableAttributedString(string : original)

        for match in matches.reversed(){
            let emoticon = attributeString.attributedSubstring(from: match.rangeAt(1)).string

            if let image = UIImage(named : "\(emoticon)"){
                let attributedImage = NSTextAttachment()
                attributedImage.image = image
                attributedImage.bounds = CGRect(x : 0, y : 0, width : image.size.width, height : image.size.height)
                attributeString.replaceCharacters(in: match.rangeAt(0), with: NSAttributedString(attachment: attributedImage))
            }
        }

        self.attributedText = attributeString
    }catch{

    }

2 个答案:

答案 0 :(得分:0)

你不能这样做。无论是快速还是客观 - c。

要做的是存储要检索的数据。那就是......将名称存储在某处并使用它来加载图像。不是相反。

因此,创建一个类似于imageName的属性,然后将其用作图像名称。

答案 1 :(得分:0)

我解决了这个问题。带有Image的NSTextAttachment无法在UITextField中显示。但是,在具有编辑模式的UITextView中,可以显示图像。