gpt4 book ai didi

ruby - 正则表达式:如何替换除单词/模式序列之外的所有字符?

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

我有以下字符串:

"ft-2 MY AWESOME ft-12 APP"
"MY AWESOME APP"
"MY AWESOME APP ft-20"

我想对除 ft-<NUMBER> 之外的词做一些修改(在本例中为 titleization)部分。 ft-<NUMBER>词可以出现在任何地方。它可以出现多次,也可能根本不存在。字符串操作后,最终结果应如下所示:

"ft-2 My Awesome ft-12 App"
"My Awesome App"
"My Awesome App ft-20"

是否有可能在 Ruby 中编写可以执行此转换的任何正则表达式?

我试过这样的:

"ft-4 MY AWESOME ft-5 APP".gsub(/(?<=ft-\d\s).*/) { |s| s.titleize }

我知道了:ft-4 My Awesome Ft 5 App作为返回。

最佳答案

R = /
[[:alpha:]]+ # match one or more uppercase or lowercase letters
(?=\s|\z) # match a whitespace or end of string (positive lookahead)
/x # free-spacing regex definition mode

def doit(str)
str.gsub(R) { |s| s.capitalize }
end

doit "ft-2 MY AWESOME ft-12 APP"
#=> "ft-2 My Awesome ft-12 App"
doit "MY AWESOME APP"
#=> "My Awesome App"
doit "MY AWESOME APP ft-20"
#=> "My Awesome App ft-20"

关于ruby - 正则表达式:如何替换除单词/模式序列之外的所有字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42305118/

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