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

时间:2012-11-26 22:19:12

标签: java string random scalacheck

我一直在使用ScalaCheck进行自动单元测试。它的默认字符串生成器(即它的默认Arbitrary[String]实例)有点太强强大,通常产生一个不可读的混乱,主要由我不想支持的字符组成,我的系统可以甚至渲染。

我已经着手创建更多Arbitrary[String]个实例,并试图找出其中的内容。 以下是一些有助于测试的String类示例:

  • 基本的多语言平面字符串
  • 星界
  • 拉丁文字符串(包括扩展名a / b)
  • 法语单词
  • 从左到右的语言字符串
  • 从右到左的语言字符串
  • 中文句子
  • “网络字符串”(从构成网络内容的99.9999%的字符集中提取的字符串)
  • 用你的想象力......

那里有库可以随机制作这些或类似的字符串吗?

2 个答案:

答案 0 :(得分: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看看翻译。

答案 1 :(得分:0)

尝试

RandomStringUtils.random(10, true, false)

参数如下:int count, boolean letters, boolean numbers

您需要导入org.apache.commons.lang.RandomStringUtils;