【发布时间】:2015-01-04 14:40:40
【问题描述】:
我在理解如何在 Swift 中使用子字符串时遇到了问题。基本上,我得到的 JSON 值具有以下格式的字符串:
<a href="#">Something</a>
我正在尝试使用 Swift 摆脱 HTML 锚标记,所以我只剩下Something。我的想法是在字符串中找到每个 < 和 > 的索引,这样我就可以做一个 substringWithRange 并前进到正确的索引。
我的问题是我不知道如何找到索引。我读过 Swift 不支持索引(除非你扩展它。)
我不想不必要地增加 CPU 周期。所以我的问题是,我如何以一种不低效的方式找到索引?或者,有没有更好的过滤标签的方法?
编辑:将 Andrew 的第一个代码示例转换为函数:
func formatTwitterSource(rawStr: String) -> String {
let unParsedString = rawStr
var midParseString = ""
var parsedString = ""
if let firstEndIndex = find(unParsedString, ">") {
midParseString = unParsedString[Range<String.Index>(start: firstEndIndex.successor(), end: unParsedString.endIndex)]
if let secondStartIndex = find(midParseString, "<") {
parsedString = midParseString[Range<String.Index>(start: midParseString.startIndex, end: secondStartIndex)]
}
}
return parsedString
}
没什么太复杂的。它接受一个包含标签的字符串。然后它使用 Andrew 的魔法将所有内容解析出来。我重命名了变量并使它们更清晰,这样您就可以看到哪个变量在这个过程中做了什么。然后最后返回解析后的字符串。
【问题讨论】:
-
请注意,这些答案都不能将换行符
之类的 HTML 实体转换为 \n 和/或 £ 之类的特殊 HTML 实体。 &复制;   等... -
@LeonardoSavioDabus 你是对的。但公平地说,我只问了。不过,我不得不问,在您在另一个线程中的回答中,这是否可以解析所有内容?
-
是的,但是结果是一个普通的字符串。
-
@LeonardoSavioDabus 不错!下次我必须解析 HTML 时,我会保留它的书签。