jul*_*101 69
或者,如果您不想使用包,则可以进行简单的实现,例如:
import 'dart:math';
void main() {
print(getRandomString(5)); // 5GKjb
print(getRandomString(10)); // LZrJOTBNGA
print(getRandomString(15)); // PqokAO1BQBHyJVK
}
const _chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
Random _rnd = Random();
String getRandomString(int length) => String.fromCharCodes(Iterable.generate(
length, (_) => _chars.codeUnitAt(_rnd.nextInt(_chars.length))));
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,您不应使用此代码生成密码或其他类型的机密。如果你这样做,请至少使用Random.secure()
来创建随机生成器。
小智 10
import 'dart:math';
String generateRandomString(int len) {
var r = Random();
String randomString =String.fromCharCodes(List.generate(len, (index)=> r.nextInt(33) + 89));
return randomString;
}
Run Code Online (Sandbox Code Playgroud)
import 'dart:math';
import 'dart:convert';
String getRandString(int len) {
var random = Random.secure();
var values = List<int>.generate(len, (i) => random.nextInt(255));
return base64UrlEncode(values);
}
Run Code Online (Sandbox Code Playgroud)
字符串总是以==
. 我也认为这不是最快的解决方案。但是您不需要第三方包,也不必声明晦涩的常量。
带有字符代码的选项 A:
import 'dart:math';
String generateRandomString(int len) {
var r = Random();
return String.fromCharCodes(List.generate(len, (index) => r.nextInt(33) + 89));
}
Run Code Online (Sandbox Code Playgroud)
使用可见字符(包括特殊字符)生成随机字符串。
带有预定义字符串的选项 B:
import 'dart:math';
String generateRandomString(int len) {
var r = Random();
const _chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
return List.generate(len, (index) => _chars[r.nextInt(_chars.length)]).join();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22163 次 |
最近记录: |