To generate a string you may try to use this function:
private static string GenerateString(int length, int minCharCode, int maxCharCode)
{
var builder = new StringBuilder(length);
var random = new Random();
for (var i = 0; i < length; i++)
{
builder.Append((char) random.Next(minCharCode, maxCharCode));
}
return builder.ToString();
}
minCharCode and maxCharCode set your unicode characters range. You may call this function hundreds times. And if you whant a variable-length strings you may randomize length parameter at each call. Usage:
static void Main(string[] args)
{
const int minJpnCharCode = 0x4e00;
const int maxJpnCharCode = 0x4f80;
var random = new Random();
for (int i = 0; i < 10000; i++)
{
Console.WriteLine(GenerateString(random.Next(0, 50), minJpnCharCode, maxJpnCharCode));
}
Console.ReadLine();
}
Update
Chinese and japanese chars has many ranges in unicode. You may take it from here Japanese or just use Google. Than you need the next code:
/// <summary>
/// Represents our characters range
/// </summary>
class Range
{
public int Begin { get; set; }
public int End { get; set; }
public Range(int begin, int end)
{
Begin = begin;
End = end;
}
}
Our generator:
private static string GenerateString(int length, IList<Range> ranges)
{
var builder = new StringBuilder(length);
var random = new Random();
for (var i = 0; i < length; i++)
{
var rangeIndex = random.Next(ranges.Count);
var range = ranges[rangeIndex];
builder.Append((char)random.Next(range.Begin, range.End));
}
return builder.ToString();
}
Usage:
var ranges = new[]
{
new Range(0x4e00, 0x4f80),
new Range(0x5000, 0x9fa0),
new Range(0x3400, 0x4db0),
new Range(0x30a0, 0x30f0),
// and so on.. add any range here
};
for (var i = 0; i < 10000; i++)
{
Console.WriteLine(GenerateString(random.Next(0, 50), ranges));
}