Found (regex: "_.") ------替换为下一个字符 (+-6ren">
gpt4 book ai didi

swift - 如何使用 Swift NSRegularExpression 获取大写字母?

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

我有这样一个字符串:

“te_st” 并喜欢用该字符的大写版本替换所有下划线后跟一个字符


From "te_st" --> Found (regex: "_.") ------替换为下一个字符 (+ 大写 ("s"->"S")--------> "teSt"


"te_st" ---> 到 "teSt"
"_he_l_lo" ---> 到 "HeLLo"
"an_o_t_h_er_strin_g" ---> 到 "anOTHERString"

...但我无法像这个小片段那样使用 Swift 的 NSRegularExpression 真正让它工作:

var result = "te_st" // result should be teSt
result = try! NSRegularExpression(pattern: "_*").stringByReplacingMatches(in: result, range: NSRange(0..<result.count), withTemplate: ("$1".uppercased()))

最佳答案

没有将匹配项转换为大写的常规语法。您发布的代码试图将字符串 $1 转换为大写,这当然只是 $1。它不会尝试在运行时转换 $1 匹配项表示的值。

这是使用正则表达式查找后跟小写字母的 _ 的另一种方法。这些被枚举并替换为大写字母。

extension String {
func toCamelCase() -> String {
let expr = try! NSRegularExpression(pattern: "_([a-z])")
var res = self
for match in expr.matches(in: self, range: NSRange(0..<res.count)).reversed() {
let range = Range(match.range, in: self)!
let letterRange = Range(match.range(at: 1), in: self)!
res.replaceSubrange(range, with: self[letterRange].uppercased())
}

return res
}
}

print("te_st".toCamelCase())
print("_he_l_lo".toCamelCase())
print("an_o_t_h_er_strin_g".toCamelCase())

这个输出:

teSt
HeLLo
anOTHErStrinG

关于swift - 如何使用 Swift NSRegularExpression 获取大写字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48155850/

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