gpt4 book ai didi

带字符串操作的 Ruby gsub

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:57 24 4
gpt4 key购买 nike

我是 ruby​​ 的新手,正在编写表达式以通过散列其中的值来替换 xml 标记之间的字符串。

我做了以下替换新密码

puts "<password>check1</password>".gsub(/(?<=password\>)[^\/]+(?=\<\/password)/,'New \0')
RESULT: <password>New check1</password> (EXPECTED)

我的期望是得到这样的结果(值“New check1”的Md5校验和)

<password>6aaf125b14c97b307c85fc6e681c410e</password>

我尝试了以下方法,但都没有成功(我已经包含了所需的库“require 'digest'”)。

puts "<password>check1</password>".gsub(/(?<=password\>)[^\/]+(?=\<\/password)/,Digest::MD5.hexdigest('\0'))
puts "<password>check1</password>".gsub(/(?<=password\>)[^\/]+(?=\<\/password)/,Digest::MD5.hexdigest '\0')
puts "<password>check1</password>".gsub(/(?<=password\>)[^\/]+(?=\<\/password)/, "Digest::MD5.hexdigest \0")

非常感谢任何帮助实现预期的帮助

最佳答案

这会起作用:

require 'digest'

line = "<other>stuff</other><password>check1</password><more>more</more>"

line.sub(/<password>(?<pwd>[^<]+)<\/password>/, Digest::SHA2.hexdigest(pwd))

=> "<other>stuff</other>8a859fd2a56cc37285bc3e307ef0d9fc1d2ec054ea3c7d0ec0ff547cbfacf8dd<more>more</more>"

确保一次输入一行,您可能需要 sub,而不是 gsub

P.S.:同意 Tom Lord 的评论。如果您的 XML 不是很大,请尝试使用 XML 库来解析它……也许是 Ox 或 Nokogiri?不同的图书馆有不同的优势。

关于带字符串操作的 Ruby gsub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50951406/

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