gpt4 book ai didi

ruby - 用 Ruby 替换文件中的文本

转载 作者:太空宇宙 更新时间:2023-11-03 17:59:19 24 4
gpt4 key购买 nike

我需要读入一个 xml 格式的文件,但所有文件都挤在一行中,我需要解析该行以找到特定的属性并将其值替换为我指定的值。

文件可能包含:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><VerificationPoint type="Screenshot" version="2"><Description/><Verification object=":qP1B11_QLabel" type="PNG">

我需要搜索这一行,找到属性“Verification object=”并将 :qP1B11 替换为我自己的字符串。请注意,如果可能的话,我不想替换字符串的 _QLabel"type="PNG"> 部分。

我不能使用 sub 因为我不重视可能是任何东西的属性,我相信我应该能够使用正则表达式来做到这一点,但我从来没有使用过他们之前和我见过的所有例子都让我比以前更困惑。

如果有人能给我一个优雅的答案(如果使用正则表达式,还有一个解释),那将是一个巨大的帮助!

谢谢

最佳答案

您有 XML,因此请使用 XML 解析器。 Nokogiri 将很快完成这项工作:

doc = Nokogiri::XML(that_string)
doc.search('Verification').each do |node|
node['object'] = node['object'].sub(/:qP1B11/, 'PANCAKES')
end
new_string = doc.to_xml
# <?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<VerificationPoint type="Screenshot" version="2">\n <Description/>\n <Verification object="PANCAKES_QLabel" type="PNG">\n</Verification>\n</VerificationPoint>\n"

您可以使用 to_xml 的选项调整输出格式.

如果你只有一个<Verification>那么你可以这样做:

node = doc.at('Verification')
node['object'] = node['object'].sub(/:qP1B11/, 'PANCAKES')
new_string = doc.to_xml

无论哪种情况,您都需要调整正则表达式和替换项以满足您的需要。

关于ruby - 用 Ruby 替换文件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762911/

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