如何在 Rust 中生成随机 unicode 字符串?
How to generate random unicode strings in rust?
我正在实现一个模糊器,我想生成随机的 unicode 字符串。我想出了这个解决方案,但是,它非常低效并且很少产生一些字符串。有没有更好的方法来生成unicode字符串?
谢谢。
use rand::{thread_rng, Error, Rng};
use std::convert::TryFrom;
fn main() -> Result<(), Error> {
let mut rng = thread_rng();
let mut arr: Vec<u32> = vec![0; 1024];
rng.try_fill(&mut arr[..])?;
println!(
"{:?}",
arr.iter()
.map(|u| char::try_from(*u))
.flatten()
.collect::<String>()
);
Ok(())
}
使用这样的东西:
fn get_random_string(len: usize) -> String {
rand::thread_rng()
.sample_iter::<char, _>(rand::distributions::Standard)
.take(len)
.collect()
}
如果要打印控制字符,您可能需要过滤它。此外,字符分布与您在野外可能遇到的任何 UTF-8 字符串非常不同。
我正在实现一个模糊器,我想生成随机的 unicode 字符串。我想出了这个解决方案,但是,它非常低效并且很少产生一些字符串。有没有更好的方法来生成unicode字符串?
谢谢。
use rand::{thread_rng, Error, Rng};
use std::convert::TryFrom;
fn main() -> Result<(), Error> {
let mut rng = thread_rng();
let mut arr: Vec<u32> = vec![0; 1024];
rng.try_fill(&mut arr[..])?;
println!(
"{:?}",
arr.iter()
.map(|u| char::try_from(*u))
.flatten()
.collect::<String>()
);
Ok(())
}
使用这样的东西:
fn get_random_string(len: usize) -> String {
rand::thread_rng()
.sample_iter::<char, _>(rand::distributions::Standard)
.take(len)
.collect()
}
如果要打印控制字符,您可能需要过滤它。此外,字符分布与您在野外可能遇到的任何 UTF-8 字符串非常不同。