我发现自己想在 Elixir 中这样做:
re_sentence_frag = %r/(\w([^\.]|\.(?!\s|$))*)(?=\.(\s|$))/
Regex.replace(re_sentence_frag, " oh. a DOG. woOf. ", String.capitalize("\\1"))
当然,这没有任何影响。(它只将字符串大写"\\1"
一次。)我真正的意思是应用String.capitalize/1
到replace
函数找到的每个匹配项。但是第三个参数不能带函数引用,所以传递&(String.capitalize("\\1")
也不起作用。
这似乎是如此基本,以至于我很惊讶这是不可能的。是否有另一种方法可以巧妙地表达这种操纵?看起来底层的 Erlang 库不会立即支持将函数引用作为第三个参数传递,因此在 Elixir 中修复这可能并非完全容易。
您将如何对每个匹配的字符串进行编程操作?