在Java中随机生成“有趣”的字符串

4

我一直在使用ScalaCheck进行自动单元测试。它的默认字符串生成器(即其默认的 Arbitrary [String] 实例)有点过于强大,通常会产生一个难以阅读的混乱字符串,其中包含了我不想支持的大部分字符,而且我的系统甚至无法呈现。

我开始创建一些更多的Arbitrary [String]实例,并试图找出是否存在以下有用于测试的一些字符串类:

  • 基本多语言平面字符串
  • 星际字符串
  • 拉丁语系字符串(包括扩展a / b)
  • 法语单词
  • 从左到右的语言字符串
  • 从右到左的语言字符串
  • 中文句子
  • "web strings"(从构成网络内容99.9999%的字符集中提取的字符串)
  • 可发挥想象力……

是否存在可以随机生成这些或类似字符串的库?

2个回答

1
我会采取不同的方法。你提供的所有示例都映射到Unicode字符块中。请参见http://www.fileformat.info/info/unicode/block/index.htm,只需选择您喜欢的块,然后生成仅限于这些范围的随机字符串即可。
int count = 10;
StringBuilder out = new StringBuilder();
Random rand = new Random(0);
for (int i = 0; i < count; i++) {
  char ch = rand.nextInt(numCharsInRange) + firstCharInRange;
  out.append(ch);
}
return out.toString();

另一种方法是从不同语言中获取随机的预先组合的文本片段。您可以在此处获取一些:http://www.unicode.org/standard/WhatIsUnicode.html只需查看翻译即可。


0

尝试

RandomStringUtils.random(10, true, false)

以下是参数:int count, boolean letters, boolean numbers 您需要导入org.apache.commons.lang.RandomStringUtils;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接