gpt4 book ai didi

ruby - 如何在 Ruby 的子字符串中拆分 CamelCase 字符串?

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

我有一个漂亮的 CamelCase 字符串,例如 ImageWideNiceImageNarrowUgly。现在我想在它的子字符串中断开该字符串,例如 ImageWideNarrow,以及 Nice丑陋

我认为这可以简单地解决

camelCaseString =~ /(Image)((Wide)|(Narrow))((Nice)|(Ugly))/

但奇怪的是,这只会填充$1$2,而不会填充$3

你有更好的拆分字符串的想法吗?

最佳答案

s = 'nowIsTheTime'

s.split /(?=[A-Z])/

=> ["now", "Is", "The", "Time"]

?=pattern 是一个积极前瞻的例子。它基本上匹配字符串中 pattern 之前的一个点。它不是消耗字符,也就是说,它不包括 pattern 作为匹配的一部分。另一个例子:

    irb> 'streets'.sub /t(?=s)/, '-'
=> "stree-s"

在这种情况下,s 被匹配(只有第二个 t 匹配)但没有被替换。感谢@Bryce和他的 regexp doc link. Bryce Anderson 添加了解释:

The?=at the beginning of the()match group is called positive lookahead, which is just a way of saying that while the regex is looking at the characters in determining whether it matches, it's not making them part of the match. split()normally eats the in-between characters, but in this case the match itself is empty, so there's nothing [there].

关于ruby - 如何在 Ruby 的子字符串中拆分 CamelCase 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997516/

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