Если у вас есть полный контроль над файлами HTML, вы можете вставить заполнитель, в который вы хотите вставить свое значение:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div>
<h3>
@@index@@ 如何查询我购买的订单?
</h3>
<p>您好,请微信关注“中通创客”,点击右下角“我的”,选择“订单查询”查询订单信息。
</p>
</div>
</body>
</html>
Затем вы можете загрузить содержимое HTML в String
и заменить заполнительс вашим значением перед загрузкой HTML в WKWebView
:
if let filepath = Bundle.main.path(forResource: "content", ofType: "html") {
do {
let rawHtmlString = try String(contentsOfFile: filepath)
let htmlString = rawHtmlString.replacingOccurrences(of: "@@index@@", with: "17.")
webView.loadHTMLString(htmlString, baseURL: nil)
} catch {
// contents could not be loaded
}
}
Если вы не можете вставить заполнитель и использовать HTML-файлы такими, как они есть, вы можете вставить свое значение следующим образом:
if let filepath = Bundle.main.path(forResource: "content", ofType: "html") {
do {
let rawHtmlString = try String(contentsOfFile: filepath)
// get the ranges of the h3 tags
if let h3OpeningTagRange = rawHtmlString.range(of: "<h3>"), let h3ClosingTagRange = rawHtmlString.range(of: "</h3>") {
// get the text inbetween the h3 tags
let h3Content = rawHtmlString[h3OpeningTagRange.upperBound..<h3ClosingTagRange.lowerBound]
// build the new html string
let htmlString =
// everything until and including the <h3> tag
rawHtmlString[...h3OpeningTagRange.upperBound]
// the value you want to insert
+ "17. "
// the text inbetween the h3 tags
+ h3Content
// the rest of the hmtl including the </h3> tag
+ rawHtmlString[h3ClosingTagRange.lowerBound...]
webView.loadHTMLString(String(htmlString), baseURL: nil)
}
} catch {
// contents could not be loaded
}
}
Получает диапазон открывающего тега <h3>
и диапазон закрывающего тега </h3>
и создает строку HTML, используя эти диапазоны.
Это не очень надежный способ сделатьэто, но это может быть простым решением для вашего особого случая.