我需要生成随机字符串作为输出, 输入可以是已安装在System中的语言名称/语言环境名称。
所有建议都表示赞赏。 感谢。
取自评论
方法签名可以是:
public String getRandomStringOfLocale(Locale locale);
因此对于input=Locale.ENGLISH
输出可以="adsaswzxcvnaj"
(随机)对任何区域设置都是明智的。
答案 0 :(得分:5)
这可能听起来很奇怪,但可以解决您的问题。
从Wikipedia获取随机文章,其中包含您需要随机字符串的语言和字符集。删除所有非字母数字字符和HTML标记。实例化随机整数生成器并使用它从表示文本的字符串中选择字符。
String text = WikipediaGrabber.grab(Locale.FRENCH);
text = removeNonAlphaNumericCharacters(text);
Random r = new Random();
StringBuilder word = new StringBuilder();
for (int i = 0; i < NUMBER_OF_CHARACTERS_PER_RANDOM_STRING; i++)
{
int index = r.nextInt() * text.length();
word.append(text.substring(index, index+1);
}
System.out.println("random string in French: " + word.toString());
答案 1 :(得分:1)
我认为您可能想要的是您想要来自一个特定Unicode代码块或其他字符串的随机字符。是对的吗?我不认为Android附带了API中公开的代码块的任何定义。 (必须有一些Character.UnicodeBlock方法的定义才能工作,但我认为它无法访问。)
您可以生成自己的Unicode字符范围表,然后在给定区域设置时确定如何匹配一个。但是,许多语言环境将映射到同一个Unicode块。例如,大多数Latin-1语言(英语,西班牙语,法语,德语......)将映射到BASIC_LATIN块。
如果你想要随机字符串,例如,包括ñ用于西班牙语语言环境而不是英语语言环境,那就更难了。