Expressions¶
Datafaker supports different kind of expressions which allows to customise the output.
Letterify¶
This one will replace ?
symbols with latin letters e.g.
Faker faker = new Faker();
faker.expression("#{letterify 'test????test'}"); // could give e.g. testqwastest
// Also there could a third argument telling if characters should be uppercase
faker.expression("#{letterify 'test????test','true'}"); // could give e.g. testSKDLtest
Numerify¶
This one will replace #
symbols with digits e.g.
Faker faker = new Faker();
faker.expression("#{numerify '#test#'}"); // could give e.g. 3test5
faker.expression("#{numerify '####'}"); // could give e.g. 1234
Bothify¶
Applies both letterify and numerify e.g.
Faker faker = new Faker();
faker.expression("#{bothify '?#?#?#?#'}"); // could give a1b2c3d4
faker.expression("#{bothify '?#?#?#?#', 'true'}"); // could give A1B2C3D4
Templatify¶
This is available since 1.2.0
This one will replace symbol mentioned in the second args with one of symbols mentioned after it.
Faker faker = new Faker();
// e.g. there is expression test and we want to replace t with q or @
faker.expression("#{templatify 'test','t','q','@'}"); // could give @esq
// another example there is expression test and we want to replace t with q or @ or $ or *
faker.expression("#{templatify 'test','t','q','@','$','*'}"); // could give @esq
Examplify¶
This one will replace symbols by example: uppercase with uppercase, digit with digit, lowercase with lowercase.
Faker faker = new Faker();
faker.expression("#{examplify 'ABC'}"); // could give QWE
faker.expression("#{examplify 'test'}"); // could give ghjk
Regexify¶
This one allows generating output based on regexp, e.g.
Faker faker = new Faker();
faker.expression("#{regexify '(a|b){2,3}'}"); // could give ab
faker.regexify("[a-z]{4,10}"); // could give wbevoa
Options¶
This is available since 1.2.0
This will return one from the provided options e.g.
Faker faker = new Faker();
faker.expression("#{options.option 'ABC','2','5','$'}"); // could give $
faker.expression("#{options.option '23','2','5','$','%','*'}"); // could give *
Csv¶
This is available since 1.4.0
The expression will return generated csv based on input parameters
faker.expression("#{csv '1','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}");
// "name_column","last_name_column"
// "Sabrina","Kihn"
faker.expression("#{csv ' ### ','\"','false','3','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}");
// "Thad" ### "Crist"
// "Kathryne" ### "Wuckert"
// "Sybil" ### "Connelly"
Json¶
This is available since 1.4.0
The expression will return generated json based on input parameters
faker.expression("#{json 'person','#{json ''first_name'',''#{Name.first_name}'',''last_name'',''#{Name.last_name}''}','address','#{json ''country'',''#{Address.country}'',''city'',''#{Address.city}''}'}");
// {"person": {"first_name": "Barbie", "last_name": "Durgan"}, "address": {"country": "Albania", "city": "East Catarinahaven"}}
Others¶
It is possible to call methods returning string values and taking primitive or string args via expressions e.g.