使用 faker 生成 java 个姓氏,但只需要字母
Use faker to generate java last names but required letters only
在我们的测试中需要使用一些名称生成器,所以我们使用了:
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
</dependency>
Faker faker = new Faker();
String firstName = faker.name().firstName();
String lastName = faker.name().lastName();
工作非常清楚。但是有时我们会因为在姓氏中生成 '
而失败,例如 O'Keefe
、D'Amore
。要求是不要在那里使用 '
。试图修复它我在使用 faker
实例之前使用了一些表达式,如下一个:
faker.expression("[A-Za-z]+");
...和其他人(#{regexify '(A-Za-z)'}
、#{regexify '[A-Za-z]+'}
...),但没有帮助。 (无论如何,我可以在姓氏中检测到 '
。)
有什么解决问题的想法吗?
可以使用 replaceAll
利用表达式 [^A-Za-z]
只允许字母字符:
Faker faker = new Faker();
String firstName = faker.name().firstName();
String lastName = faker.name().lastName().replaceAll("[^A-Za-z]", "");
Faker 有一堆最流行的 yml 文件 names/lastnames 等。有一堆支持的语言环境。解决问题的方法是为自定义语言环境提供自定义文件。
Faker faker = new Faker(new Locale("en","TEST"));
自定义文件示例 (en-TEST.yml
):
en-TEST:
faker:
name:
name:
- "#{first_name} #{last_name}"
first_name: [
Adedayo
]
last_name: [
Tella
]
因此您可以从默认文件(en
语言环境)复制 last_name
值并删除您不喜欢的所有内容。 Faker 将选择自定义文件并将其用于随机生成。
p.s。
作为一种选择,您可以只浏览现有文件并找到一个没有错误姓氏的文件( en-NG
似乎可以满足您的需要)。但是,不能保证新版本的 faker 会保留相同的值。
在我们的测试中需要使用一些名称生成器,所以我们使用了:
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
</dependency>
Faker faker = new Faker();
String firstName = faker.name().firstName();
String lastName = faker.name().lastName();
工作非常清楚。但是有时我们会因为在姓氏中生成 '
而失败,例如 O'Keefe
、D'Amore
。要求是不要在那里使用 '
。试图修复它我在使用 faker
实例之前使用了一些表达式,如下一个:
faker.expression("[A-Za-z]+");
...和其他人(#{regexify '(A-Za-z)'}
、#{regexify '[A-Za-z]+'}
...),但没有帮助。 (无论如何,我可以在姓氏中检测到 '
。)
有什么解决问题的想法吗?
可以使用 replaceAll
利用表达式 [^A-Za-z]
只允许字母字符:
Faker faker = new Faker();
String firstName = faker.name().firstName();
String lastName = faker.name().lastName().replaceAll("[^A-Za-z]", "");
Faker 有一堆最流行的 yml 文件 names/lastnames 等。有一堆支持的语言环境。解决问题的方法是为自定义语言环境提供自定义文件。
Faker faker = new Faker(new Locale("en","TEST"));
自定义文件示例 (en-TEST.yml
):
en-TEST:
faker:
name:
name:
- "#{first_name} #{last_name}"
first_name: [
Adedayo
]
last_name: [
Tella
]
因此您可以从默认文件(en
语言环境)复制 last_name
值并删除您不喜欢的所有内容。 Faker 将选择自定义文件并将其用于随机生成。
p.s。
作为一种选择,您可以只浏览现有文件并找到一个没有错误姓氏的文件( en-NG
似乎可以满足您的需要)。但是,不能保证新版本的 faker 会保留相同的值。