I was working on some code where I needed to mask data, and the application was being written in Groovy. I came up with this (what I think is a) neat trick to do it, using regular expressions and lambda expressions/closures.
package example class Model implements Serializable { ... String value ... def valueMasked() { return value.replaceFirst('.*(?=.{4})', { match -> return "".padLeft(match.length(), '*') }); } }