我有一个字符串:
"Location: <<LesionLoc>><br>
Quality: <<TESTTEST>><br>"
最终结果应为:
Location: <span class=\"span_dropdowntext\" keyword=\"LesionLoc\" style=\"color:blue;font-weight:bold;\"contenteditable=\"False\">LesionLoc</span>
Quality: <span class=\"span_dropdowntext\" keyword=\"TESTTEST\" style=\"color:blue;font-weight:bold;\"contenteditable=\"False\"> TESTTEST</span>
如您所见,我要做的就是:
将<<
替换为<span class=\"span_dropdowntext\" keyword=\"LesionLoc\" style=\"color:blue;font-weight:bold;\"contenteditable=\"False\">
将>>
替换为</span>
最后,(这让我很难受),将字符串“ LesionLoc”和“ TESTTEST”插入keyword=/"/"
部分。
替换很容易,只需要使用string.replacingOcurences即可,但是我认为最好遍历所有<<
和>>
,在循环内替换并插入字符串会更好进入关键字部分。
我真的迷失了。有人提到使用索引和子字符串函数来返回新字符串,但是我不确定如何实现。
谢谢。
答案 0 :(得分:1)
首先,您必须找到关键字(在这种情况下为LesionLoc
和TESTTEST
)。您可以使用带有正则表达式格式NSRegularExpression
的{{1}}来找到它
下一步,将您的<<[a-z0-9]+>>
替换为
<<
和<span class=\"span_dropdowntext\" keyword=\"<KEYWORD>\"style=\"color:blue;font-weight:bold;\"contenteditable=\"False\">
和>>
。
您可以使用此非常简单的代码
</span>
答案 1 :(得分:0)
private func replaceString(_ str : String)->String{
guard let keyword = findKeyword(str) else{
fatalError()
}
let replacementString = "<span class=\"span_dropdowntext\" keyword=\"\(keyword)\" style=\"color:blue;font-weight:bold;\"contenteditable=\"False\">"
var newString = str.replacingOccurrences(of: ">>", with: "</span>")
newString = newString.replacingOccurrences(of: "<<", with: replacementString)
return newString
}
private func findKeyword(_ s : String)->String?{
var str = Array(s)
let firstKey = "<<"
let secondKey = ">>"
var startingIndex : Int = 0
var movingIndex : Int = 0
while movingIndex < str.count + 1 - secondKey.count && startingIndex < str.count + 1 - firstKey.count{
if String(str[startingIndex..<startingIndex + firstKey.count]) != firstKey{
startingIndex += 1
}else{
if movingIndex < startingIndex + firstKey.count{
movingIndex = startingIndex + firstKey.count
}else{
if String(str[movingIndex..<movingIndex + secondKey.count]) != secondKey{
movingIndex += 1
}else{
return String(str[startingIndex+firstKey.count..<movingIndex])
}
}
}
}
return nil
}
现在,您可以使用replaceString函数完成工作
let string = "Location: <<LesionLoc>><br>"
print(replaceString(string))
您的最终结果将是
Location: <span class="span_dropdowntext" keyword="LesionLoc" style="color:blue;font-weight:bold;"contenteditable="False">LesionLoc</span><br>
结果字符串的末尾有一个“ br”。我不知道您是否要删除该文件。.但是,如果这样做,您应该知道如何删除。