javascript - 消除
来自目标 C 中的 WKwebview
来自目标 C 中的 WKwebview
问题描述
我有字符串:
<div><br/><div><br/><div style="box-sizing: border-box; font-family: 'Segoe UI', 'Helvetica Neue', 'Apple Color Emoji', 'Segoe UI Emoji', Helvetica, Arial, sans-serif; font-size: 14px;"><br/><div data-tid="messageBodyContainer"><br/><div data-tid="messageBodyContent"><br/><div>Thanks for agreeing to participate in our online bulletin board </div><br/><div><br/></div><br/><div><br/></div><br/></div><br/></div><br/></div><br/></div><br/></div>
它由很多 和 组成
。这个字符串来自服务器。所以它并不总是固定的。我需要编写一些动态逻辑,如果它包含多个 div 和 br 则只有它会被删除。
解决方案
如果您将 html 作为字符串获取,则可以使用正则表达式对其进行解析
// Original string
let htmlString = "<div><br/><div><br/><div style=\"box-sizing: border-box; font-family: 'Segoe UI', 'Helvetica Neue', 'Apple Color Emoji', 'Segoe UI Emoji', Helvetica, Arial, sans-serif; font-size: 14px;\"><br/><div data-tid=\"messageBodyContainer\"><br/><div data-tid=\"messageBodyContent\"><br/><div>Thanks for agreeing to participate in our online bulletin board </div><br/><div><br/></div><br/><div><br/></div><br/></div><br/></div><br/></div><br/></div><br/></div>"
do {
// Let regex tell handle the html matching
let regex = try NSRegularExpression(pattern: "<.*?>", options: NSRegularExpression.Options.caseInsensitive)
// Get the range for the html string
let range = NSMakeRange(0, htmlString.count)
// Replace the regex matches with an empty string
let parsedString = regex.stringByReplacingMatches(in: htmlString, options: NSRegularExpression.MatchingOptions(), range: range, withTemplate: "")
print("PARSED HTML STRING:\n \(parsedString)")
} catch(let error) {
print("Error: \(error.localizedDescription)")
}
由于您无法控制服务器端响应,因此使用SwiftSoup库可能会有所帮助。这是一个很好的 html 原生界面。
编辑:
几件事:对不起,我错过了问题的objective-c部分。感谢您使用 Swift 并运行它。其次,如果您不想要带有 html 标签的字符串(我误解了原始问题),那么最好的选择是使用stringByReplacingCharactersInRange
. 这是删除第一个 div 和 br 标签的示例。
NSString *removeFirstPass = @"<div><br/>";
NSRange firstPassRange = [htmlString rangeOfString:removeFirstPass];
if (NSNotFound != firstPassRange.location) {
htmlString = [htmlString stringByReplacingCharactersInRange:firstPassRange withString:@""];
}
NSLog(@"Parsed String: %@", htmlString);
这将为您提供第一个实例并替换它。你会想要找到正确的范围并在你认为合适的时候替换它们。您还需要知道它们在范围内的位置,以便您知道您正在更换正确的。
推荐阅读
- java - 将文本大小调整为适合矩形的正确(或最佳)方法是什么?
- mysql - MySql 建模导入 MySql 方案
- ios - 构建失败 - 卸载 FB Pod 后“找不到框架 FBSDKCoreKit”
- python - Python - 抓取
- c++ - 在c ++中,List在哪里
::push_back(int item) 将项目部署到?到堆栈还是到堆? - python - 使用大数据集训练 TensorFlow BoostedTreesClassifier 时出现解码错误
- python - while 循环只经过一次
- firebase - 使用新查询重新访问时,已创建的嵌套 FutureBuilder 快照仍然存在
- r - 从宽到长:多列、两个时间点、两组
- reactjs - 在 React 中使用 ApolloClient 订阅 AppSync