【发布时间】:2015-03-25 09:11:02
【问题描述】:
我是 Groovy 的新手,有一个关于 replaceFirst 的问题。
groovy-jdk API doc 给了我一些例子......
assert "hellO world" == "hello world".replaceFirst("(o)") { it[0].toUpperCase() } // first match
assert "hellO wOrld" == "hello world".replaceAll("(o)") { it[0].toUpperCase() } // all matches
assert '1-FISH, two fish' == "one fish, two fish".replaceFirst(/([a-z]{3})\s([a-z]{4})/) { [one:1, two:2][it[1]] + '-' + it[2].toUpperCase() }
assert '1-FISH, 2-FISH' == "one fish, two fish".replaceAll(/([a-z]{3})\s([a-z]{4})/) { [one:1, two:2][it[1]] + '-' + it[2].toUpperCase() }
前两个例子很简单,但我看不懂其余的。
首先,[one:1, two:2] 是什么意思?
我什至不知道要搜索它的名称。
第二,为什么会有“它”的列表? 文档说 replaceFirst()
用对该文本的闭包调用的结果替换第一次出现的捕获组。
“它”不是指“第一次出现的捕获组”吗?
我将不胜感激任何提示和 cmets!
【问题讨论】: