gpt4 book ai didi

html - 在索引处的字符串中插入字符串(快速)

转载 作者:行者123 更新时间:2023-11-28 14:28:58 24 4
gpt4 key购买 nike

我有一段文本,里面有一些 HTML 标签。像这样:

Lorem lipsum <a href="www.example.com"> lorem lipsum.

我想插入文本style=\"text-decoration: none\就在 HTML 标记的末尾,这样链接就没有下划线了。

我有一个正则表达式模式可以找到 HTML 标签:<\s*a[^>]*>(.*?)<\s*/\s*a>

我有以下代码来获取段落文本中的正则表达式匹配项并计算 HTML 标记中最后一个字符的位置:

let range = NSRange(location: 0, length: paragraph.utf16.count)
let regex = try! NSRegularExpression(pattern: "<\\s*a[^>]*>(.*?)<\\s*/\\s*a>")
let allMatches = regex.matches(in: paragraph, options: [], range: range)
let lastCharacter = allMatches[0].range.location + allMatches[0].range.length

如何插入字符串 style=\"text-decoration: none\在那个位置?

我试过这样的:

let newParagraph = paragraph.insert(" style=\"text-decoration: none\"", at: lastCharacter)

但是 Xcode 表示 insert 中的第一个参数方法必须是字符,而不是字符串。

最佳答案

在我的解决方案中,我使用正则表达式查找 < 之间的所有内容和 >找到整个 HTML 标签。找到标签后,我使用 replacingOccurrences(of:with:)方法

  1. 用额外的 style= 替换结束标记的括号属性(加上一个右括号)来创建修改后的标签,
  2. 用修改后的标签替换原来的标签。

代码如下:

let string = "Lorem lipsum <a href=\"www.example.com\"> lorem lipsum <a href=\"www.somewhereelse.com\"> dolor sit amet."
let insertString = " style=\"text-decoration: none\">"
var modifiedString = string

let regex = try! NSRegularExpression(pattern: "<.*?>")
let range = NSRange(string.startIndex..., in: string)
let matches = regex.matches(in: string, range: range)
let tags = matches.map { String(string[Range($0.range, in: string)!]) }

for tag in tags {
let newTag = tag.replacingOccurrences(of: ">", with: insertString)
modifiedString = modifiedString.replacingOccurrences(of: tag, with: newTag)
}

print(modifiedString)

更新后的代码现在使用循环根据您的要求将所有标签替换为增强标签。为此,您必须将正则表达式更改为非贪婪:<.*?>而不是 <.*> .

关于html - 在索引处的字符串中插入字符串(快速),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51374924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com