在iOS Swift中将字符串文本替换为数组字符串中的特定文本

时间:2019-05-24 07:02:42

标签: swift swift3 swift3.2

entities = ({confidence = "<null>"; end = 113; entity = DATE; extractor = "ner_spacy";start = 103;value = "five years"; }, {confidence = "<null>"; end = 177;entity = ORG; extractor = "ner_spacy";start = 163; value = "xyz Company"; } );

这是后端数据,我需要使用remove在字符串中显示并在字符串文本中添加新值:

示例:“根据您在{{ORG}}的{{years_of_experience}}经验,什么样的过程改进或标准设置?”

答案:0 --->五年数组和1 ---> xyz公司数组       我需要显示此数组0和1,而不是用大括号括起来。

在xyz公司的五年经验中,什么样的过程改进或标准设置?

2 个答案:

答案 0 :(得分:0)

我试图为您的问题找到解决方案,

这是我用作示例的JSON response

[
    {
        "confidence": "<null>",
        "end": 113,
        "entity": "DATE",
        "extractor": "ner_spacy",
        "start": 103,
        "value": "five years"
    },
    {
        "confidence": "<null>",
        "end": 177,
        "entity": "ORG",
        "extractor": "ner_spacy",
        "start": 163,
        "value": "xyz Company"
    }
]

使用JSON responseCodable解析为array of Entity对象,即

struct Entity: Codable {
    var confidence: String?
    var end: Int?
    var entity: String?
    var extractor: String?
    var start: Int?
    var value: String?
}

我在响应中使用entity key来确定要替换的值,即

if let data = str.data(using: .utf8) { //You'll get this data from API response
    let entities = try? JSONDecoder().decode([Entity].self, from: data)

    var sentence = "In your {{DATE}} of experience at {{ORG}}, what kind of process improvements or standards setup?"
    entities?.forEach({
        if let entity = $0.entity, let value = $0.value {
            sentence = sentence.replacingOccurrences(of: "{{\(entity)}}", with: value)
        }
    })
    print(sentence) //In your five years of experience at xyz Company, what kind of process improvements or standards setup?
}

在上面的代码中,我遍历了entities array并将{{entity}}的每次出现都替换为相应的value,即

"{{DATE}}" is replaced with "five years"
"{{ORG}}" is replaced with "xyz Company"

如果您仍然遇到任何问题,或者如果我对问题陈述的理解不充分,请告诉我。

答案 1 :(得分:0)

它不适用于动态数据,在某些文本中不包含任何键值和{{}},在这种情况下,我们将如何编写它。

我需要显示带有此类数据的表格视图并播放语音消息。

示例:q1)您能否向我介绍一下您自己,重点介绍与项目经理和您从事过的不同领域相关的经验

答案:用户说出答案,发送后端并将响应存储在字典中。

Q2)根据您在{{ORG}}的{{years_of_experience}}经验,什么样的流程改进或标准设置?     注意:1)我需要替换{{}}内的文本值            2)对于某些问题文本,没有实体键和值。            3)我们需要存储{{ORG}}值和“何时有问题”文本               {{ORG}},我们应该替换实体的值。

Q3)您能告诉我一些软件开发方法论,以及您使用过的和满意的内容吗?

q4)太好了。您能说出您在{{industry}}网域和{{years_of_experience}}中所支持的几个客户吗?

------------很快。

每当用相应文本说出答案时,我都会存储实体键和值响应